每行一次 COUNTIF,在 ARRAYFORMULA(Google 张)中的花括号中有多个条件

COUNTIFs once per row, with multiple criteria in curly braces in ARRAYFORMULA (Google Sheets)

(注意:我在这里发现了类似的问题,但是其中 none 个在 Google Sheet 中使用了花括号,所以我的问题可能针对不同的情况)

我在 Google Sheets 中有以下代码:

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

说明B3是一个复选框。如果勾选,我想检查 B5:B 是否包含 “TU Wien”或“Vienna Univ Techn”等,因为 A5:A1.

我的问题:如果一个单元格同时包含“TU Wien”和[,此代码计算一行两次 =38=] "Vienna Univ Techn"(或花括号中的任何其他值)。

我想要的:它应该只计算每行一次一次,即使一个单元格中有多个匹配项。

测试SheetHere.

考虑到您示例的具体细节,这将是我在 C3 中的方法:

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

IF 仍在评估复选框是否被选中。如果没有,什么也不做。如果是,则处理公式的其余部分。

COUNTA 将获得 FILTER 选择的项目数。

FILTER 将运行 中的数据B5:B 通过两次测试。首先,仅在 A5:A 为 1 的那些行中进行规则。第二个规则仅在满足 REGEXEXTRACT 条件的那些剩余元素中进行规则 [即,NOT(ISERROR(...)) 表示满足 REGEXEXTRACT 条件。

REGEXEXTRACT 正在寻找与“[vVwW]ien”的匹配项;用简单的英语来说,这意味着“匹配任何以 'v' 或 'w'(大写或小写)开头然后具有 'ien'(即,它将匹配 'vien' 'Vien' 'wien' 或 'Wien').

如果满足所有条件,则 COUNTA 计算单元格文本。