#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, а затем сохранить формулы типа регулярных выражений какмаксимально широкий в пределах этих параметров.