用了LOOKUP(1,0/,.....)的这个套路,表格好卡好卡,怎么办?
送书活动又来了!今天送3本《Excel跟卢子一起学 早做完,不加班 》,从留言区随机抽奖。
这是两位粉丝对多条件的看法,一位觉得用了LOOKUP(1,0/,.....)的这个套路,表格好卡好卡,另一位觉得VLOOKUP不好用。
最优秀的两个查找函数都不好,难道还有更好的函数?还是通过实例来说明更靠谱。
表1是数据源
表2是要进行多条件查找。
多条件查找,有一个最好的套路。
=LOOKUP(1,0/((查找值1=查找区域1)*(查找值2=查找区域2)),返回区域)
相信有不少粉丝都是直接这样套进去。
=LOOKUP(1,0/(($A2='1'!$A:$A)*(B$1='1'!$B:$B)),'1'!$C:$C)
演示的案例只有几行,速度还行,如果是几千行,那肯定会很卡。当数据多一点的时候,最好只引用有内容的区域,这样可以大大提升运算效率。
=LOOKUP(1,0/(($A2='1'!$A$1:$A$18)*(B$1='1'!$B$1:$B$18)),'1'!$C$1:$C$18)
另外,如果表格都是同一类型的公式,计算完以后,可以将前面的所有公式粘贴成值,只留最后一行。只有一行有公式计算效率会高很多,同时如果有新内容,还可以下拉公式。
还可以在Excel选项,公式,改成手工重算,这样中间操作的时候公式不运算就不会卡,只有关闭表格那一瞬间才会计算。
再看VLOOKUP双多条件查找,真的不好用吗?
如果你是用最原始的查找,当然不好用,因为压根就是错误的用法。
多条件查找,在不用辅助列的情况下是这么写的。用IF({1,0}重新构造一个新区域,区域的左边是A列&B列的内容,右边是C列的内容。
=VLOOKUP($A2&B$1,IF({1,0},'1'!$A:$A&'1'!$B:$B,'1'!$C:$C),2,0)
同理,写公式的时候要考虑运算效率,别引用整列,只引用有内容的区域。
=VLOOKUP($A2&B$1,IF({1,0},'1'!$A$1:$A$18&'1'!$B$1:$B$18,'1'!$C$1:$C$18),2,0)
最后,如果考虑到实用性还有效率,卢子觉得用辅助列是最好的方法。
数据源用辅助列合并起来,这样就将多条件的问题转变成单条件查找了。
=A1&B1
现在简简单单的公式就能查找。
=VLOOKUP($F2&G$1,$C$1:$D$18,2,0)
在实际的查找中,有的内容是没有对应值的,会返回错误值#N/A,可以嵌套IFERROR让错误值显示空白。
=IFERROR(VLOOKUP($F2&G$1,$C$1:$D$18,2,0),"")
大道至简,越简单越平常的方法,也许就是最好的方法。
平常你用什么方法查找对应值?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)