excel高手请进!!

帮我解释一下这个函数!!
要详细!!
=INDEX(B:B,SMALL(IF(A$1:A$100=INDEX(A:A,MATCH(C$1,B:B,)),ROW($1:$100),4^8),ROW(2:2)))&""
上面那个函数写错了!!是这个:=INDEX(B:B,SMALL(IF($A$1:$A$4=INDEX(A:A,MATCH($D$1,B:B,0)),ROW($A$1:$A$4),10^4),ROW(A1)))&""

=INDEX(B:B,SMALL(IF($A$1:$A$4=INDEX(A:A,MATCH($D$1,B:B,0)),ROW($A$1:$A$4),10^4),ROW(A1)))&""
这么一样函数,从里到外解释吧,INDEX(A:A,MATCH($D$1,B:B,0)),中MATCH($D$1,B:B,0)的意思是从B列中查找D1的位置,D1用了绝对地址,下拉复制时不变,0代表精确查找,可以不写,意思一样,就是可改为MATCH($D$1,B:B,),找到D1位置后,用INDEX返回A列中这个位置的数据,IF(A$1:A$100=INDEX(A:A,MATCH(C$1,B:B,)),ROW($1:$100),4^8)这样的意思是用IF函数来判断A1:A100中与刚才返回的数据是否一致,如果是,返回A1:A100的行号,否则返回4^8,是4的次方,就是65536,用这个65536可以区别于A:A100的行号,使用INDEX返回时会返回一个零值,SMALL(IF($A$1:$A$4=INDEX(A:A,MATCH($D$1,B:B,0)),ROW($A$1:$A$4),10^4),ROW(A1))最后面的ROW(A1)就是取得A1的行号1,采用相对地址,下拉时会变成ROW(A2),即2,下拉时,这样可以取得第一小,第二小,第三小这样一个序列,INDEX(B:B,SMALL(IF($A$1:$A$4=INDEX(A:A,MATCH($D$1,B:B,0)),ROW($A$1:$A$4),10^4),ROW(A1)))这样就是把第一小的列号用INDEX返回,下拉时把第二小,第三小等的数据返回,后面&""
的意思是当A1:A100符合条件的数据用完之后,将返回65536行的数据,肯定是0,连接上一个空格,就是显示为空,不显示一个0,显得美观些.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-24
001 aaa
001 aab
002 bbb
001 aac
002 bba
001 bbc
003 cca
001 dda
003 ccb
004 ddc
004 ddd

=INDEX(B:B,SMALL(IF($A$1:A$14=INDEX(A:A,MATCH($D$1,B:B,0)),ROW($A$1:A$14),10^4),ROW(A1)))&""
简介一下:
MATCH($D$1,B:B,0)找出你输入查询的值$D$1如aaa,和B列(B:B)的那个值匹配,返回匹配值所在行号如aaa对应第一行1,最后一个参数match_type 为 0,意为函数 MATCH 在B列查找等于查询值( $D$1)的第一个数值。并支持乱序查找。

INDEX(A:A,MATCH($D$1,B:B,0)),返回A列某行(行号通过前述这个公式MATCH($D$1,B:B,0)以计算出来了)的值如是第一行,那么值为001

IF($A$1:A$14=INDEX(A:A,MATCH($D$1,B:B,0)),ROW($A$1:A$14),10^4)
$A$1:A$14这个因为在数组公式取值为A1到A14的每个单元格的值和这个INDEX(A:A,MATCH($D$1,B:B,0))取得的值比较,如下图
[图片]
比较结果为逻辑值,如下图
[图片]
ROW($A$1:A$14)这个就是取A1到A14的行号,如图
[图片]

若为真就取对应的行号,若为假则为10的4次方10000,变大为了取最小值如图
[图片]

small(...,ROW(A1))就是取第1个最小值,下面单元格公式分别为
small(...,ROW(A2))取第2个最小值
small(...,ROW(A3))取第3个最小值
..........
如上图第一个最小值为1,
[图片]
最外面的公式,就是在B列找到1行对应的值
下面单元格的值分别取的是第2个最小值、第3个最小值,那么就会得出不同的对应值
最后的 &""
是避免前面为0值是显示零,若为0则连接一个空值"",就显示空
不知这样说能否明白
-----------------------------
图片放上来变形了,已给你发了消息本回答被提问者采纳
第2个回答  2010-07-24
公式缺花括号。即输入上述公式后摁ctrl-shift-enter

意思是:在b列中找到d1的值①对应的a列的数②
数②在a列排在第行号个的数③对应的b的值④的文本。
如果在E列输入该公式,E列返回的是d1对应的b列值同行的a列值按顺序的b值。

4 8 | 4 6 在b列找到4
4 1 | | 4 对应a列数字5
5 6 | | |
5 4 | | a列的第一个5在第三行
| | | | | 第三行的b值为6就是e1
| | | | | |
| | | | | a列的第二个5在第四行
| | | | | 第四行的b值为4就是e2
第3个回答  2010-07-24
=INDEX(A1:C10,5,2) 返回A1:C10区域,第五行,第二列的值!

=SMALL(A1:A10,5,1) 返回A1:A10区域,数值从小到大的第一个数值(最小第一个)

=MATCH("A",B:B,0) 从B列中找出第一个"A"的位置

=ROW(1:1) 返回数值1,即第一行,向下复制公式时会自动递加上去,可用=row()代替,=row() 是返回当前行行数

B:B 是整个B列

固体函数的作用写上了,但是整个公式你就自己参考一下吧
相似回答