使用多条件XLOOKUP为何出现数组大小不匹配错误?
解决XLOOKUP多条件匹配时的“数组参数大小不同”错误
问题场景
使用XLOOKUP进行多条件匹配时,无论使用何种数据集,都会返回错误:
Array arguments to
XLOOKUPare of different size
以测试数据集为例:
| 项目1 | 项目2 | 价格 |
|---|---|---|
| Ships | Water | 300 |
| Cars | Roads | 50 |
| Airplanes | Sky | 120 |
| Motorcycles | Roads | 20 |
设置条件:
- 单元格F1:Cars
- 单元格F2:Roads
使用公式:
=XLOOKUP(F1&F2,A2:A5&B2:B5,C2:C5)
期望返回结果:50
实际返回结果:
#N/A
Array arguments toXLOOKUPare of different size
错误原因
在Google Sheets中,直接用&拼接两个单元格区域(如A2:A5&B2:B5)时,默认不会自动生成数组,只会计算第一个单元格的拼接结果(即A2&B2),导致查找数组是单个值,而返回数组C2:C5是4个值的数组,两者大小不匹配,触发错误。
解决方案
方案1:用ARRAYFORMULA包裹拼接区域
修改公式为:
=XLOOKUP(F1&F2, ARRAYFORMULA(A2:A5&B2:B5), C2:C5)
ARRAYFORMULA会触发数组运算,让A2:A5和B2:B5的每个单元格逐一拼接,生成和C2:C5大小一致的数组,匹配后即可返回正确结果50。
方案2:直接用多条件数组匹配
无需拼接字符串,直接用条件组合生成布尔数组,匹配符合所有条件的位置:
=XLOOKUP(1, (A2:A5=F1)*(B2:B5=F2), C2:C5)
(A2:A5=F1)和(B2:B5=F2)会分别生成布尔数组,相乘后只有两个条件都满足的位置会得到1,XLOOKUP匹配1即可返回对应价格。
内容的提问来源于stack exchange,提问作者Colin Jones
相关产品推荐
相关产品推荐

