Как подсчитать ячейки в столбце таблицы, который содержит заданную текстовую строку c (COUNT.IF не работает) - PullRequest
1 голос
/ 31 марта 2020

Мне нужно посчитать, сколько ячеек в столбце таблицы содержит указанную c текстовую строку. Я использую эту формулу, и она хорошо работает:

=COUNT.IF(TB_table_name[col_name];"*string_to_be_found*")

Но мне нужно считать только отфильтрованные ячейки. Я нашел майские решения (используя SUMPRODUCT) для inte rnet, но только для общих ячеек, а не для конгломератов таблиц.

Это моя таблица: enter image description here

Как видите, в одной и той же ячейке много значений (это происходит потому, что оно автоматически генерируется опросом, выполненным в формах MS). Из-за этого мне нужно найти определенную c строку для подсчета.

Используя "COUNT.IF", я получаю следующие результаты:

enter image description here

Обратите внимание, что значения в ячейке не случайны, а предопределены - конечно, последовательность не может быть одинаковой, но список возможных терминов:

Пожалуйста, не могли бы вы помогите разобраться? Поверьте мне, я пробовал много вещей, но ничего не получалось, и кажется, что это так легко достичь: (

1 Ответ

2 голосов
/ 31 марта 2020

Хитрость заключается в том, чтобы объединить пару идей, которые вы нашли, используя SUMPRODUCT.

Вы, вероятно, нашли эту ссылку (или такую ​​же, как она), которая давала руководство для формулы как это:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(B2:B7,ROW(B2:B7)-MIN(ROW(B2:B7)),,1))*(B2:B7="Quality"))

Что переводит в ваше проблемное пространство, как это:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(TB_table_name[col_name],ROW(TB_table_name[col_name])-MIN(ROW(TB_table_name[col_name])),,1))*(TB_table_name[col_name]="*string_to_be_found*"))

Это прекрасно работает, если вы НЕ используете поиск по шаблону. Но это то, что вам нужно. Таким образом, в этот ответ показывает, что подстановочный знак в SUMPRODUCT должен использовать оператор --. Таким образом, результатом является объединение двух ответов, и вы получите:

=SUMPRODUCT(SUBTOTAL(3,OFFSET(TB_table_name[col_name],ROW(TB_table_name[col_name])-MIN(ROW(TB_table_name[col_name])),,1))*(--(ISNUMBER(FIND("string_to_be_found",TB_table_name[col_name])))))

Обратите внимание, что string_to_be_found НЕ имеет подстановочных знаков *. Об этом позаботится функция FIND.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...