如何在Google Sheets中按条件返回唯一值并将行用逗号拼接?
数组参数尺寸不匹配错误解决方法
错误原因
你使用的公式=ARRAYFORMULA(TEXTJOIN(", ";FALSE;IF(A22:A32=A2:A10;K22:K32;"")))报错Array arguments to EQ are of different size(意为EQ函数的数组参数尺寸不一致),核心问题是:
- 参与比较的两个区域行数不匹配:
A22:A32有11行,A2:A10只有9行 - Google Sheets的数组运算要求参与比较的数组尺寸完全一致,因此触发错误
修正后的公式
根据需求(将A2:A10中每个值对应的A22:A32匹配项的K22:K32内容用逗号拼接),推荐使用BYROW结合FILTER实现,逻辑更清晰:
=BYROW(A2:A10, LAMBDA(x, TEXTJOIN(", ", FALSE, FILTER(K22:K32, A22:A32=x))))
BYROW(A2:A10, LAMBDA(x,...)):遍历A2:A10中的每一个值xFILTER(K22:K32, A22:A32=x):筛选出A22:A32中等于x的行对应的K列内容TEXTJOIN(", ", FALSE, ...):将筛选结果用逗号拼接,FALSE表示保留空值(若不需要空值可改为TRUE)
替代方案(基于ARRAYFORMULA)
如果习惯使用ARRAYFORMULA,可以通过转置区域让数组尺寸匹配:
=ARRAYFORMULA(IF(A2:A10="",,TEXTJOIN(", ", FALSE, IF(A22:A32=TRANSPOSE(A2:A10), K22:K32, ""))))
通过TRANSPOSE(A2:A10)将9行的列转置为9列,与A22:A32的11行形成11×9的数组,完成匹配后按列拼接结果。
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

