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)®exreplace(regexreplace(trim(query(regexreplace(Priority!A2:A," ",char(9999)),"",9^9))," ",char(9998)),char(9999)," ")&char(9998),char(9998)®exreplace(regexreplace(trim(flatten(query(transpose(regexreplace(C2:E," ",char(9999))),"",9^9)))," ",char(9998)&"|"&char(9998)),char(9999)," ")&char(9998)),)})
我有一个“优先”客户列表:
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)®exreplace(regexreplace(trim(query(regexreplace(Priority!A2:A," ",char(9999)),"",9^9))," ",char(9998)),char(9999)," ")&char(9998),char(9998)®exreplace(regexreplace(trim(flatten(query(transpose(regexreplace(C2:E," ",char(9999))),"",9^9)))," ",char(9998)&"|"&char(9998)),char(9999)," ")&char(9998)),)})