一个EXCEL数组公式的解析

 

  • INDEX($A:$A,SMALL(IF($B$1:$B$999=$C1,ROW($1:$999),4^8),COLUMN(A1)))&""
  • INDEX($A:$A,LARGE(IF($B$1:$B$999=$C2,ROW($1:$999),0),2))&""
  • ctrl+shift+enter输出数组公式
  • 可见为了取到合适的行号,small里故意用if 让非匹配值返回为65536,而large里,故意用if 让非匹配值,返回了0,(可能有时候需要返回一个极度小的负数)

 

 

 

 

 

消化下面的这些

 公式拆解
首先,它是一个数组公式
COLUMN(A$1) 
从F列往右,返回值为1,2,3,4,5,6……序列数,表示匹配到的第几个值

ROW($1:$2000)
返回1:2000 各行的行号 

IF($A$1:$A$2000=$E1,ROW($1:$2000),4^8) 
A列数据和E列当前行数据进行匹配,相等,则返回行号,不相等,返回一个常数4^8,即65536,在Excel2003中,它是表格的最后一行

SMALL(IF(xxx),COLUMN())
返回第COLUMN()个最小值,即依次返回A列上匹配到的值对应的行号
 
INDEX($B:$B,SMALL())
在B列返回SMALL指定行号的值

INDEX()&""
将结果转换为文本 

 {}
括弧表示这是一个数组公式 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值