Количество элементов с учетом регистра символов
Предположим Вам необходимо посчитать количество элементов с учетом регистра символов, как это сделать? Достаточно просто, понадобится всего две функции, одна из которых сравнивает значения, а вторая подсчитывает результат.
Исходные данные
В диапазоне В3:В11 есть некий массив исходных значений, в ячейках D3:D7 перечислены значения которые мы будем искать в исходном массиве и записывать соответствующие результаты в ячейки Е3:Е7.
Формула
Для решения задачи запишем в ячейку Е3 следующую формулу.
=СУММПРОИЗВ(—СОВПАД(D3;B3:B11))
И затем растянем формулу на оставшиеся ячейки от Е4 до Е7. В результате получим такие значения:
Если пересчитать вручную то можем убедиться что результат верный. При этом формула выглядит несколько странно, разберемся, как же это работает.
Функция «СОВПАД» сравнивает две строки и возвращает результат «ИСТИНА» или «ЛОЖЬ», если сравниваются две строки, то результатом будет логическое значение. При этом функция сравнивает значения с учетом регистра. В нашем примере второй аргумент функции – диапазон ячеек, в таком случае функция возвращает массив логических значений. В массиве результатов значение «ИСТИНА» будет стоять на тех же позициях, в которых искомый текст совпадает с текстом в ячейке.
Функция «СУММПРОИЗВ» должна посчитать сколько раз элемент встретился в исходном диапазоне, те в массиве результатов функции «СОВПАД». Однако функция «СУММПРОИЗВ» трактует любые не числовые значения как 0, а функция «СОВПАД» возвращает именно логические значения. По этому нам необходимо преобразовать логические значения в числовые, именно по этому перед функцией «СОВПАД» стоят два минуса.
На самом деле, два минуса имеют свое название – бинарное отрицание. И именно бинарное отрицание преобразует логическую «ИСТИНА» в 1, а логическую «ЛОЖЬ» в 0. С точки зрения логических операций, использование бинарного отрицания наиболее правильный способ преобразования логического значения в числовое. Но этот вариант не единственный, можно так же умножить результат на 1, или прибавить 0. То есть результат выполнения формул:
=СУММПРОИЗВ(—СОВПАД(D3;B3:B11))
=СУММПРОИЗВ(СОВПАД(D3;B3:B11)*1)
=СУММПРОИЗВ(СОВПАД(D3;B3:B11)+0)
будет абсолютно идентичным.