我们前几章上面介绍了,根据某国产品牌官网介绍的使用&连接来进行多列关联查询,非常的慢。有没有公式可以快速进行XLOOKUP多列关联查询,我们找到了一个速度还可以的办法。
原理:有几列需要关联查询,我们就写几个XLOOKUP的单列查询。然后用AND语句,检查这些XLOOKUP的结果是否正确。再用IF语句,将AND作为逻辑值。用其中一个XLOOKUP的单列查询作为真值,null作为假值。这样的语句,比用&连接的语句效率要高非常多,100万条数据大概只需要30秒左右就计算出来了。
来看一下公式:
=IF(
AND
(
XLOOKUP(B2,Sheet2!$B2:B8,Sheet2!D2:D$8,"NULL")<>"NULL",
XLOOKUP(C2,Sheet2!$C2:C8,Sheet2!D2:D$8,"NULL")<>"NULL",
XLOOKUP(D2,Sheet2!$E2:E8,Sheet2!D2:D$8,"NULL")<>"NULL"
)
,XLOOKUP(C2,Sheet2!$C2:C8,Sheet2!D2:D$8,"NULL"),"NULL")
上面的公式,看起来有点吓人,我们用颜色做了区分。它的意思就是:如果b、c、d三列都相等,用xlookup取d列的值。
在excel2021以上版本测试,速度很快。在国产某品牌也测试过,不公布结果。
这种IF(and(),,)或者IF(OR(),,)或者二者组合的模式,将单列查询变成多列查询,成为了一种可能。不光适用于XLOOKUP,其他函数也同样可以。