谷歌表格ARRAYFORMULA报错:Array arguments to EQ are of different size求助
解决Google Sheets中数组大小不匹配的问题
我明白你遇到的问题了——你原来的公式之所以报错,是因为A2:A和B2:B8是两个长度不一样的数组:B2:B8只有7行数据,而A2:A是一整列(行数远多于7),当你直接用=逐行对比时,Google Sheets会要求两个数组的大小完全一致,否则就会抛出"Array arguments to EQ are of different size"的错误。
要实现你想要的逻辑(判断A列每个值是否匹配B列任意值,匹配返回0,否则返回1),你需要用能检查「值是否存在于某个区域」的函数,而不是逐行对比。这里有两个简单好用的方案:
方案一:用COUNTIF批量判断
这个方法通过统计A列值在B列中的出现次数来判断是否匹配:
=ARRAYFORMULA(IF(COUNTIF(B2:B8, A2:A)>0, 0, 1))
COUNTIF(B2:B8, A2:A):对A列的每个值,统计它在B2:B8区域里出现的次数IF(..., 0, 1):如果次数大于0(说明匹配到了)就返回0,否则返回1ARRAYFORMULA:让公式自动应用到A列的所有行,不用下拉填充
方案二:用MATCH+ISNA判断
这个方法通过匹配位置来判断是否存在,找不到匹配值时MATCH会返回#N/A,用ISNA识别这个错误:
=ARRAYFORMULA(IF(ISNA(MATCH(A2:A, B2:B8, 0)), 1, 0))
MATCH(A2:A, B2:B8, 0):精确查找A列每个值在B2:B8中的位置,找不到就返回#N/AISNA(...):如果结果是#N/A(说明没匹配到)就返回TRUE,否则FALSEIF(..., 1, 0):没匹配到返回1,匹配到返回0
额外注意:时间格式匹配
如果A列是带日期的时间戳(比如2024/5/20 02:30),而B列只有纯时间(比如02:30),你需要先提取A列的时间部分再对比,比如修改方案一的公式:
=ARRAYFORMULA(IF(COUNTIF(B2:B8, TEXT(A2:A, "HH:mm"))>0, 0, 1))
TEXT(A2:A, "HH:mm")会把A列的时间戳转换成和B列一致的时间格式,确保对比的是正确的内容。
内容的提问来源于stack exchange,提问作者Nixxhalle
相关产品推荐
相关产品推荐

