Я обычный пользователь Excel, и с этой проблемой я сталкивался раньше и в конце концов нашел другой способ сделать это, но в этом случае я думаю, что это мой единственный вариант.
Вот пример изображения моего листа:
Я хочу посчитать, сколько раз ячейка в диапазоне содержит «1a» И ячейка над ячейкой с 1a содержит «Math». Очевидно, этот пример тривиален, но я решил, что логика решения этой проблемы будет такой же, как если бы это был более крупный лист с моими данными, полностью его заполняющими.
В этом примере ответ должен быть дважды. Как мне построить формулу для условного подсчета этого типа?
источник
,
используется десятичная точка и;
используется для разделения спискаЯ предлагаю решение, которое требует одну колонку помощников. Предполагая, что ваши данные расположены в ячейках A3: J8, используйте столбец K в качестве помощника и поместите в него следующую формулу массива
Поместите формулу без фигурных скобок, а затем в строке формул нажмите CTRL + SHIFT + ENTER, чтобы создать формулу массива. Это дает счет «1a» со словом «Math» над этим. Начните с К4 и потяните вниз. Для альтернативных строк он вернет 0, но это не должно иметь значения. Теперь просто СУММА столбца помощников. Для этого вы можете использовать простую функцию SUM. Там могут быть более разумные способы достичь этого без столбца Helper или можно даже использовать макросы VBA.
источник
Если вы переформатируете данные, чтобы Math и 1a находились в одной ячейке:
тогда вы можете использовать countif:
источник
Вы можете использовать:
=SUMPRODUCT(--(F3:K12&F2:K11="1a"&"Math"))
Вы должны использовать начальный массив (F3: K12) в первой ссылке и после
&
Вашей ссылки меньше одной строки (добавьте одну строку вверх и меньше одной строки вниз) (F2: K11).В этом случае
(F3:K12&F2:K11="1a"&"Math")
будет возвращаться,True
если строки в F3: K12 = «1а» и F2: K11 = «Math» перед условием будет возвращать 1 , если это SUMPRODUCT будет сумма (1,1,0 ...) Какой счетчик--
True
источник
SUMPRODUCT
это хороший инструмент для этой работы, но вы могли бы использовать его лучше. (1) Вы не должны смотреть в строке 2; Там нет ничего интересного. Вы должны посмотреть на диапазоны строк 4:12 и 3:11. (2) Как и многие другие ответы здесь, ваш подсчитает пары ячеек, где «1a» находится в строке с нечетным номером, а «Math» над ним в строке с четным номером. (Хотя вопрос не относится к этой проблеме, на рисунке показано, что такие пары не должны учитываться.) (3) Из-за того, как вы используете&
, ваш ответ будет подсчитывать пары ячеек, в которых одна содержит «1 утра», а другая - одну. выше это содержит "ath".который уже был представлен fitch496 , это хорошее начало. (Примечание: некоторые локали используют
;
для разделения параметров функции; другие используют,
.) У него есть одна возможная проблема: он будет подсчитывать пары ячеек, где «Math» находится в строке с четным номером, а «1a» ниже его в нечетном пронумерованный ряд (Хотя вопрос не касается этой проблемы, на рисунке показано, что такие пары не должны учитываться.)Чтобы решить эту проблему, я начал с преобразования приведенной выше формулы в форму, которая дает тот же результат, но с использованием
SUMPRODUCT
:Здесь мы используем стандартные приемы, предшествующие булевому выражению,
--
чтобы превратить TRUE в 1 и FALSE в 0, и использоватьSUMPRODUCT
неявное умножение в качестве логического AND. Затем я расширил это дочтобы проверить, что «Math» появился в строке с нечетным номером (
MOD(ROW(…),2)=1
). Это не удалось, потому что Excel, похоже, работаетROW(F3:K11)
так же, какROW(3:11)
и создание линейного массива из 9 значений, а не прямоугольного массива из 54 значений. (IMNSHO, это ошибка в Excel.) Я обнаружил, что могу исправить это, заставив его учитывать столбцы, а затем игнорируя их:который оценивает номер столбца каждой ячейки (
COLUMN(…)
), а затем умножает его на 0. Это работает. Иллюстрация ниже такая же, как данные ОП в вопросе, но с добавлением «Математика» и «1а» в ячейкахJ8
иJ9
. Формула fitch496COUNTIFS
(которую я включил в начало моего ответа) и моя простаяSUMPRODUCT
формула учитывают этот смещенный «Математический 1a» и дают в общей сложности 3; моя последняяSUMPRODUCT
формула игнорирует неверно выровненную «Математическую 1а» и дает в общей сложности 2.(См. Источник этого поста для копирования и вставки дружественной копии выше.)
Моя формула может быть немного упрощена:
--(MOD(row number,2)=1)
берет номер строки по модулю 2 и проверяет, равен ли он 1. Если это так, сравнительный тест выдает TRUE, который преобразуется в 1 с помощью--
. Это не 1, это должно быть 0; сравнение с 1 дает ЛОЖЬ, которая преобразуется в 0 с помощью--
. Мы можем обойтись без логических операций (проверка качества и затем применение--
к логическому результату) и просто использовать .MOD(row number,2)
--(Boolean)
это просто . Самый внутренний преобразует ИСТИНА в 1 и ЛОЖЬ в 0, но затем он превращает 1 в -1. Затем внешний преобразует -1 обратно в 1. Поскольку мы берем произведение двух факторов, внешние s взаимно компенсируют друг друга, поэтому мы можем их опустить.-(-(Boolean))
-
-
--
-
Таким образом, окончательная, упрощенная формула
источник
Если вы хотите получить общее значение, которое означает, что сколько раз Math & 1a записывается по одной формуле, это должно быть
= COUNTIF (B86; E91, "Math") + Countif (B86: E91, "1a")
Если хотите посчитать отдельно, то один и тот же счет, формула дважды.
источник
COUNTIF
это хорошая функция, она не самая лучшая для этой проблемы. Fixer1234 прав: вы считаете не то, что нужно.