万能查询函数(Index+Small+If+Row)

介绍一个INDEX+SMALL+IF+ROW的函数组合,能提取出满足某条件或某些条件的所有数据,可以一次性返回单行单列或多行多列的结果。

示例

 组合函数

=INDEX(C$1:C$15,SMALL(IF(($C$3:$C$15=$C$18)*($D$3:$D$15=$E$18),ROW($C$3:$C$15)),ROW(A1)))

主要4个函数嵌套:

最外层为index函数,index(查询区域,第几行,第几列)返回我们定位的数据;

small(数组,参数),若参数等于1,则表示返回数组最小的数值;

if函数用来做判断,若所查询区域某值与查询条件相等,则通过row函数返回行号,否则flase。

下面分三个步骤介绍(以单条件查询为例):

1.获取所有符合查询条件的行号

2.将所有行号按从小到大排序

这里if函数里的row函数写法相对于第一步行的方向也固定下来了,因为这里将是数组形式,small函数的第二参数用row(A1),为了当下拉时,可以依次获取第一最小行数,第二最小行数等等。输入完公式,用shift+ctrl+enter表示为数组公式。

3.通过index函数获取查询值

这里要注意的是,查询区域是从第一行开始,因为row返回的是实际行数,index是根据所选查询区域第几行开始查找的。因为只固定了行号,找到符合查询条间的值后,同行其他列数据右拉即可,当然也可只需手动修改index的查询区域起到一样效果。

对于多条件则可写作:

=IF((条件区域1=条件)*(条件区域2=条件2),ROW(区域))

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值