Графы один раз на строку, с несколькими критериями в фигурных скобках в ARRAYFORMULA (Google Sheets)

#google-sheets #google-sheets-formula #array-formulas #countif #curly-braces

#google-sheets #google-sheets-формула #массив-формулы #графы #фигурные скобки

Вопрос:

(Примечание: я нашел похожие вопросы здесь, но ни один из них не использовал фигурные скобки в Google Sheets, поэтому мой вопрос может касаться другой ситуации)

У меня есть следующий код в Google Sheets:

 =IF(B3,
   ArrayFormula(
       SUM(
           COUNTIFS($A$5:$A, "1",
               $B$5:$B, {"*TU Wien*", "*Vienna Univ Techn*", "*Tech?Univ?Wien*", "*TU Vienna*"}
           )
        )
    ),
 "")
  

Объяснение: B3 это флажок. Если отмечен, я хочу проверить B5:B , содержит ли он «TU Wien» или «Vienna Univ Tech» и т. Д., Учитывая дополнительный критерий, который A5:A есть 1 .

Моя проблема: этот код подсчитывает строку дважды, если ячейка содержит как «TU Wien», так и «Vienna Univ Tech» (или любое другое значение в фигурных скобках).

Что я хочу: он должен подсчитывать каждую строку только один раз, даже если в ячейке есть несколько совпадений.

Тестовый лист: Здесь .

Ответ №1:

Это был бы мой подход в C3, учитывая конкретные детали вашего примера:

 =ArrayFormula(IF(B3<>TRUE,,COUNTA(FILTER(B5:B,A5:A=1,NOT(ISERROR(REGEXEXTRACT(B5:B,"[vVwW]ien")))))))
  

IF все еще оценивает, установлен ли флажок или нет. Если нет, ничего не делайте. Если это так, обработайте остальную часть формулы.

COUNTA получит количество элементов, выбранных ФИЛЬТРОМ.

ФИЛЬТР прогонит данные в B5: B через два теста. Во-первых, правило только в тех строках, где A5:A равно 1. Второе правило только в тех оставшихся элементах, где выполняется условие регулярного извлечения [т. Е. NOT(ISERROR(...)) Означает, что условие регулярного извлечения было выполнено].

Регулярное ВЫРАЖЕНИЕ ищет соответствие «[vVwW] ien»; на простом английском это означает «Сопоставлять все, что начинается с «v» или «w» (в верхнем или нижнем регистре), а затем имеет «ien» (т. Е. Оно будет соответствовать «vien», «Vien», «wien»или «Вена»).

Если все условия выполнены, то COUNTA подсчитывает текст ячейки.

Комментарии:

1. Спасибо; Я изменил регулярное выражение на (TU [WV]ien|Vienna Univ Tech|Tech Univ [WV]ien) , и это сработало отлично.

2. @anpami, только вы знаете специфику вашего возможного набора данных. Если вы думаете, что в столбце B будут другие записи, которые каким-то образом ссылаются на Вену, то да, вам нужно будет сузить круг, как вы и сделали. Но если вы видите уникальный шаблон меньшего размера, всегда лучше использовать его. Кажется, что эта конкретная школа может появиться в еще большем количестве вариантов, чем вы указали в наборе «или» в REGEXEXTRACT; и хотя вы можете продолжать добавлять, лучше продумать, что будет и чего никогда не будет в столбце B, а затем сохранить формулы типа регулярных выражений какмаксимально широкий в пределах этих параметров.