先从最简单的开始:LOOKUP的数组用法LOOKUP(lookup_value,array)【LOOKUP(查值,数组)】
[  为简单起见,下面只讨论array为一列的情况,如:LOOKUP("AS",$A1:$A10)  ]举例复习一下LOOKUP函数的最简单的情况,如下面的这个
1212
LOOKUP("12",$A8:$13)
12
23我们注意到:这个数组是按升序排列的;
34
有两个12,一个是数值型的,一个是文本型的,而LOOKUP查的是第二个
AS DF
首先,我们要注意LOOKUP函数的以下几点特性:
1.正规的LOOKUP用法,要求数组的第一列(或第一行)必须按升序排列
2.如果到lookup_value,则正常返回;
3.如果在数组中不到查值lookup_value,则返回比它小的最大数值;
4.如果查值lookup_value小于数组的最小值,则返回#N/A;
5.查值的类型应与数组中数据的类型相匹配,对于不匹配的数据,LOOKUP会忽略
特别提醒:只有数组按升序排列,以上特性2-4才能显现下一步,如果数组不按升序排列而是乱序的,会怎么样?
这就要先搞清楚,LOOKUP是按什么策略进行查的onkey 在这方面作了一个很好的工作。
他认为LOOKUP是使用二分法进行查的。具体查流程如下:
lhome/dispbbs.asp?boardID=3&ID=113915&page=1
LOOKUP
我们把这个流程图暂且放下,来看看下面这个公式:【注:以下公式都由bosco_yip首先推出】公式①LOOKUP(9.99999999999999E+307,A62:A66),见单元格B26
3445公式目的:查数组区域(A62:A66)中最后一个数值(非
2  1.lookup_value=9.99999999999999E+307 是excel允许输入的
1  2.让LOOKUP查一个最大的数,而这个数比数组中所有的数都即根据上面的流程图:它会从中间开始45但最后一个依然小于9.99999999999999E+307
--它就返回A(posi)<;见流程图>,即A66的值。达到上面公式只能查数值型(见特性5),如果要查文本型的,怎么办?
注意到特性5,我们要使用下面的公式:
LOOKUP(REPT("龠",255),A62:A66)
式中,REPT("龠",255)表示255个"龠",而这个"龠"是目前已知的最“大
查过程及结果与上述相同,不再赘述。
[  顺便提一句,文本型的最小值是"",即空值;数字型最小值
这两个最小值,有时也有用。故存之  ]如果要全取文本与数字,用下式:
=INDEX(A62:A66,MAX(MATCH({"龠龠龠龠龠龠龠龠龠龠龠龠龠龠龠龠龠龠龠龠",9.9有以上讨论作基础,我们来看下式,这已经是LOOKUP的向量用法了:
公式②LOOKUP(2,1/(A84:A92<>""),A84:A92)
23目的:与上式相同,也是查A84:A92中的最后一个数值(非空、非文本12345首先看这里的    1/(A84:A92<>"")
123在公式中鼠标选中这一段,按下F9,整个公式变为:S LOOKUP(2,{#DIV/0!;#DIV/0!;1;1;1;#DIV/0!;1;1;#
这里,数组变成了两种值:#DIV/0!和12根据特性5,LOOKUP函数忽略错误值,即23而根据上述流程图,lookup_value>1,
可见,2可以改成任一个大于1的数字,但不能=1
比如,我们试把B84公式改为LOOKUP(1,
原因?还是仔细看看流程图,根据流程顺便说一下,公式①比公式②快得多!
=================================
至此,下面这个就比较好理解了:
多条件查询:
方法有很多如,SUM数组,SUMP
而这里用的是LOOKUP:
试试把C105改成一个字符看看?
========================
【附】
LOOKUP在查重复值中的用法:
“查重复值”是一个老话题了,各式方法多彩纷呈。
最近bosco_yip推出一个LOOKUP的解法:
(这个方法不用数组公式,但要使用一个辅助单元格。)
我们可以借此更好的理解LOOKUP,特别是体会  1/( )  这种用法在各种
…………
KUP(查值,数组)】
AS",$A1:$A10)  ]
的,而LOOKUP查的是第二个即文本型的据,LOOKUP会忽略
&ID=113915&page=1
osco_yip首先推出】
值(非空、非文本、非逻辑值、非错误值)
7 是excel允许输入的最大数字(见帮助)
而这个数比数组中所有的数都大,会怎么样?
间开始查向下一直查到最后一个!
excel中index函数的使用方法
9999999E+307
见流程图>,即A66的值。达到了公式的目的!
这个"龠"是目前已知的最“大”的文本值。
是"",即空值;数字型最小值是-9.99999999999999E+307  有用。故存之  ]
龠龠龠龠龠龠龠龠龠龠",9.99999999999999E+307},A62:A66)))最后一个数值(非空、非文本、非逻辑值、非错误值)
段,按下F9,整个公式变为:
IV/0!;1;1;1;#DIV/0!;1;1;#DIV/0!},A84:A92)
V/0!和1  (这也是用1来除的目的!)
5,LOOKUP函数忽略错误值,即只查1
述流程图,lookup_value>1,所以它返回最后一个1,即A91的值个大于1的数字,但不能=1
们试把B84公式改为LOOKUP(1,1/……),结果为S 这是错误的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。