Google 工作表:检查每一行的另一列中是否存在任何值

Google Sheets: Check if any values exist in another column for each row

我有一个“优先”客户列表:

Priority
A
B
C
D

另外,我有各种客户购买的一系列产品。

Product Evaluate Customer 1 Customer 2 ... Customer n
Drum TRUE C S ...
Bell FALSE T U ... Z
Horn TRUE A ...

我想使用 ArrayFormula 来计算“评估”列,该列检查客户 1 - 客户 n 范围内的每一行是否存在“优先级”列中的客户。

目前,我正在为每个客户的每一行使用 SEARCH:

=IF(A2="","",IF(IFERROR(search('Priority'!$A,G2),0)
+IFERROR(search('Priority'!$A,G2),0)
+IFERROR(search('Priority'!$A,G2),0)
+IFERROR(search('Priority'!$A,G2),0)
...

其中 G2 是我的产品的一行中的单个单元格 table,其中包含客户的逗号分隔值(A、T、U...)和 $A$3、$A$4、$ A$5... 是我在单独专栏中的优先客户。我正在向下拖动这个公式来评估每一行。我需要帮助想出一个不需要拖到底部的更有效的公式(arrayformula 是理想的)。

希望这很清楚 - 谢谢!

试试这个(假设您的优先级列在 sheet 优先级!A:A):

=arrayformula({"Evaluate";if(A2:A<>"",regexmatch(query(Priority!A2:A,"",9^9),regexreplace(trim(flatten(query(transpose(C2:E),"",9^9)))," ","|")),)})

增加范围D2:F,具体取决于您有多少个客户列。

您的客户名称可能带有空格,以避免部分正则表达式匹配,您可以尝试:

=arrayformula({"Evaluate";if(A2:A<>"",regexmatch(char(9998)&regexreplace(regexreplace(trim(query(regexreplace(Priority!A2:A," ",char(9999)),"",9^9))," ",char(9998)),char(9999)," ")&char(9998),char(9998)&regexreplace(regexreplace(trim(flatten(query(transpose(regexreplace(C2:E," ",char(9999))),"",9^9)))," ",char(9998)&"|"&char(9998)),char(9999)," ")&char(9998)),)})