求Google Sheets中判断Name2在两列重复的ARRAYFORMULA公式
解决Google Sheets中ARRAYFORMULA结合多条件重复判断的问题
需求说明
现有两列数据:Name 1(A列)、Name 2(B列),需要数组公式实现以下逻辑:
判断每行B列的值是否满足任一条件:
- 在A列的任意位置出现过
- 在B列的其他位置出现过(即B列中该值出现次数≥2)
满足条件返回Yes,否则返回空,且公式需自动应用到新增行。
示例表格
| Name 1 | Name 2 | Is Name2 duplicate (formula) |
|---|---|---|
| Sam | Jay | |
| Sandra | Judy | Yes |
| Jane | Judy | Yes |
| Pete | Sam | Yes |
| Pete | Sarah | |
| Gerry | Gerry | Yes |
已有尝试
你已经实现了单列匹配的数组公式:
{"match name 1";ARRAYFORMULA(if(COUNTIF (A:A, B2:B)>0, "yes",""))} {"match name 2";ARRAYFORMULA(if(COUNTIF (B:B, B2:B)>1, "yes",""))}
也写出了非数组的多条件判断公式:
=OR(COUNTIF (A:A, B2:B)>0,COUNTIF (B:B, B2:B)>1)
但OR()作为聚合函数,无法直接在ARRAYFORMULA中进行数组运算,导致公式失效。
解决方案
方法1:用数值加法替代OR逻辑
利用Google Sheets中TRUE=1、FALSE=0的特性,将两个条件的布尔结果相加,只要结果大于0就说明满足任一条件:
={"Is Name2 duplicate (formula)";ARRAYFORMULA(IF((COUNTIF(A:A, B2:B) > 0) + (COUNTIF(B:B, B2:B) > 1) > 0, "Yes", ""))}
直接将公式放在结果列的第一行即可,会自动向下填充并适配新增行。
方法2:用IF嵌套实现多条件判断
通过两层IF嵌套,依次判断两个条件,避免使用OR函数:
={"Is Name2 duplicate (formula)";ARRAYFORMULA(IF(COUNTIF(A:A, B2:B) > 0, "Yes", IF(COUNTIF(B:B, B2:B) > 1, "Yes", "")))}
逻辑:先检查是否在A列存在,是则返回Yes;否则检查是否在B列重复,是则返回Yes,否则返回空。
优化:排除空行
如果需要忽略B列的空行,可额外添加空值判断:
={"Is Name2 duplicate (formula)";ARRAYFORMULA(IF(B2:B="", "", IF((COUNTIF(A:A, B2:B) > 0) + (COUNTIF(B:B, B2:B) > 1) > 0, "Yes", "")))}
内容的提问来源于stack exchange,提问作者user984003
相关产品推荐
相关产品推荐

