google-sheets - Google表格:检查每一行的另一列中是否存在任何值
问题描述
我有一个“优先”客户的列列表:
优先事项 |
---|
一种 |
乙 |
C |
D |
另外,我有一系列不同客户购买的产品。
产品 | 评估 | 客户 1 | 客户 2 | ... | 客户 n |
---|---|---|---|---|---|
鼓 | 真的 | C | 小号 | ... | |
钟 | 错误的 | 吨 | ü | ... | Z |
喇叭 | 真的 | 一种 | ... |
我想使用ArrayFormula来计算列“评估”,该列检查客户 1 - 客户 n 范围内的每一行是否存在“优先级”列中的客户。
目前,我正在为每个客户的每一行使用 SEARCH:
=IF(A2="","",IF(IFERROR(search('Priority'!$A$2,G2),0)
+IFERROR(search('Priority'!$A$3,G2),0)
+IFERROR(search('Priority'!$A$4,G2),0)
+IFERROR(search('Priority'!$A$5,G2),0)
...
其中 G2 是我的产品表的一行中的单个单元格,客户(A、T、U...)的逗号分隔值和 $A$3、$A$4、$A$5... 是我的优先客户在单独的列中。我将这个公式向下拖动以评估每一行。我想帮助提出一个更有效的公式,不需要拖到底部(arrayformula 是理想的)。
希望这很清楚 - 谢谢!
解决方案
试试这个(假设您的优先级列在工作表优先级!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)),)})
推荐阅读
- javascript - 在 XMLHttpRequest 错误回调中获取错误文本
- mysql - 尝试从另一个容器访问 mysql Docker 容器时出现“不允许主机 '192.XXX.XXX.X' 连接到此 MySQL 服务器”错误
- linkage - Cobol 程序 A 通过 B 中的入口点调用程序 B 并崩溃
- ruby - 如何创建一个 Minimax 算法比较数组
- pandas - 使用空格作为 '000 分隔符导出金额
- javascript - 始终在后台运行的桌面应用程序
- excel - VBA:如何修复“类型不匹配”
- pyspark - withColumnRenamed 更改 Column 的 null 类型
- scala - Spark作业未连接到emr中的远程neo4j数据库
- python - 为什么jupyter的Object Detection Demo显示无法导入tensorflow?