楼主 水星钓鱼 |
注:配合http://www.exceltip.net/thread-285-1-1.html Lookup函数二分法模拟器和http://www.exceltip.net/thread-308-1-1.html LOOKUP查找策略完整流程图一起更有利于理解. 1:当lookup_vector是升序排列且有重复值时,lookup函数是定位在小于等于查找值的最后一个 eg:=lookup(3,{1;1;2;2;2},{1;2;3;4;5})结果是5 2.lookup_vector内的数据类型只有4种,数字,文本,逻辑值,错误值。当查找值分别为数字,文本,逻辑值时,只查找lookup_vector内的同类型的数据,其它类型的忽略。 eg:=LOOKUP(1,{1;#DIV/0!;"1";2;FALSE},{1;2;3;4;5})结果为1 3.当lookup_value比lookup_vector内的所有同类型数据都大时,lookup函数定位在该同类型数据的最后一个。 eg:=LOOKUP(100,{#DIV/0!;99;73;89;6;TRUE;"我";25;28;"0";FALSE;9;"79"})结果是9 4.lookup函数可以返回一维二维的内存数组。 eg:=LOOKUP({5;6;7;8;9},{1;2;3;4;5;6;7;8;9;10},{"A";"B";"C";"D";"E";"X";"C";"E";"L"})结果为 {"E";"X";"C";"E";"L"} eg:=LOOKUP(ROW(1:5)+COLUMN(A1:C1),{1;2;3;4;5;6;7;8;9;10}{"A";"B";"C";"D";"E";"X";"C";"E";"L"})结果为二维内存数组 5.lookup函数在数组连接中的作用 将{"A";"B";"C"},{"D";"E";"F";"G"}连接成{"A";"B";"C";"D";"E";"F";"G"} eg:=IF(ROW(1:7)<4,{"A";"B";"C"},LOOKUP(ROW(1:7),ROW(4:7),{"D";"E";"F";"G"})) 6.求汉字的拼音声母(非常局现性的一个办法,只适用于一些常用字,太生僻的会出错),我只试过03版本,07下行不通。 =LOOKUP(CODE(A1),45217+{0,36,544,1101,1609,1793,2080,2397,2902,3845,4107,4679,5154,5397,5405,5689,6170,6229,7001,7481,7763,8472,9264},{"A","B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"}) |
2楼 水星钓鱼 |
lookup的第3个参数也有省略形式. lookup的向量形式的第3个参数不一定要与第2个参数的区域一样大小,当第3个参数是一个单元格的引用时, 按照被查找值在第2个向量内的位置,以第3个参数的单元格的位置作为起始1,往右根据位置获得结果(因为此时它无法判断维向,所以默认返回值区域向右)当第3个参数是两个连续单元格以上(含)时,以第3个参数的第一个单元格为起始位置1,根据第3个参数决定的维向,向下或向右获得结果。这里的向下或向右并不是说它一定要向下或向右的遍历的去查找,而是指返回值的区域是在下面或右面。我大胆猜想它是根据"指针"的概念来查找所在值的位置。这里的位置的指向都是指针的作用。所以第3个参数的可以省略为只要两个连续单元格。如果返回值在行方向上,可以省略为一个单元格。而且第2个参数与第3个参数的维向还可以不一致(这个好像大家都知道,呵呵)当然以上的一切的前提都是在第2个参数的区域内找到正确值的情况下才成立。 |
3楼 海洋之星 |
看不懂啊 |
4楼 liuguansky |
只查找lookup_vector内的同类型的数据,其它类型的忽略。 嘿嘿,学习了。 |
5楼 蒸蒸日上 |
看不懂,似懂非懂! |
6楼 APOLLO |
学习了,超越Excel Help |