1、LOOKUP 函数就属于这种类型,它本身是一个“查找与引用”类函数,但利用其向后兼容性这个特性,可以解决许多看上去比较复杂的问题。
2、LOOKUP 函数有两种形式:向量形式和数组形式。当数据较多或列表较大时用向量形式,当数据较少时用数组形式。下面说到的高级应用都是向量形式,向量形式是指在单行或单列中查找值,然后返回第二个区域中相同位置的值,如根据学号查数学成绩:=LOOKUP(H3,$A$2:$A$19,$C$2:$C$19)
3、区域中的值必须以升序排列,否则可能无法返回正确的值,如果找不到查找值,则它与区域中小于巡綮碣褂或等于查找值的最大值匹配。利用其向后兼容性,可以查出某行或某列最后一个数据,如果是数值,可以用:=LOOKUP(9E+307,$C$2:$C$19),这里9E+307是科学记数法,是一个非常大的数,这个数在表中是查不到的,返回最后一个小于此数的最大数所对应的值。
4、如果是文本,由于“座”的顺序很靠后,经常作为查找值参考,作为查不到此值,从而返回最后符合条件的值:=LOOKUP("座",B:B)
5、但是上面只能在确实不会出现这种值的情况下使用,况且有的行或列中是文本或数值混输的,要返回最后一个值,就不能吹涡皋陕用上面的方法,要用:=LOOKUP(1,0/(B1:B10000<>""),B1:B10000),在此公式中,当B列中有数据时,0/(B1:B10000<>"")为0,没有数据时,除数为0,结果为错误值#DIV/0!,所以0/(B1:B10000<>"")的结果只有0和#DIV/0!两种,永远查不到查找值1,返回最后一个0,也就是单元格不为空的那个单元格中的数据。
6、利用此特性,可以用于刳噪受刃条件查找、特别是多条件查找,使用此函数进行多条件查找,公式比较简单,且不要按数组公式的方法输入:=LOOKUP(1,0/(($C$2:$C$100>90)*($D$2:$D$100>80)*($F$2:$F$100>280)),$B$2:$B$100),不管几个条件,相乘后用0来除,结果只有0和#DIV/0!两种,永远找不到1,返回与最后一个0相匹配的值。
7、有时需要将简称按对照表补全,使用其它函数非常复杂,用此函数轻而易举就能实现:=IF(A2="","",LOOKUP(1,0/FIND(A2,$B$2:$B$10),$B$2:$B$10))
8、结合其它函数,从混合文本中提取数值,例如原来输入的数据带单位,且单位不同,现在要将数量单独提取出来,单位的字符数不同,数量的字符也不同,没有什么规律,直接提取是不行的。
9、但是注意到数字都是从左开始的,所以可以从左分别取一个、两个、三个……个字符,然后再判断提取出来的几个字符是不是数值,假设数值不超过5个字符,用公式:=LEFT(B2,ROW($1:$5)),再按F9功能键,可以看到提取出来的字符。
10、再判断提取出来的数据是不是数值,一般用--、*1、+0等等来判断,这里为了结合LOOKUP函数的向后兼容性,直接用-,将数值转为负数,而文本是不能运算的,会出现错误值,所以加负号后,只有三种情况:要么是负数,要么是0,要么是错误值:=-LEFT(B2,ROW($1:$5))
11、再利用LOOKUP函数,查找1,是不可能查到的,就会返回最后一个数,也就是所有数字都取全的那个数,再取反,使其转为正数:=-LOOKUP(1,-LEFT(B2,ROW($1:$5))),再向下填充,即可将其它单元格中的数据取出来。
12、除了在左边有数值、在中间、在右边都可以利用此特性从混合文本中取数,只是要分别结合MID、RIGHT函数来用。