small用于不连续数组_用Small、If、Index、Indirect、Row、Char、Match实现一对多查找...

一.应用实例:

1.要求:通过G2单元格的下拉菜单选择不同的班级,在右侧单元格区域可以查找出对应班级所有的学生的姓名和对应的成绩。(返回查找结果区域的表头可以与原表头区域不对应)

62b6793255ce0b79e06d91343e32695d.png

2.话不多少,先给朋友们上照效果图看看是不是你们想要的操作。

9bcc70ec617d30713d11c10521f1e991.gif

二.操作步骤:

1.在H2单元格输入公式

efa88e1db7eb649fc29db3a1d7daa284.png

=INDEX(INDIRECT(CHAR(64+MATCH(H$1,$A$1:$E$1,0)) & ":"& CHAR(64+MATCH(H$1,$A$1:$E$1,0))),SMALL(IF($A$2:$A$9=$G$2,ROW($A$2:$A$9),10000),ROW(C1)))&""

2.公式解析:

(1)CHAR(64+MATCH(H$1,$A$1:$E$1,0))返回要查找字段在原始表头的列的位置用大写字母ABC…表示,例如查找数学时返回大写字母D。

(2)用 & ":"&链接(1)所讲公式返回对一列的引用。例如(1)结果返回为D时,返回D:D。

a1fc6646977299653103efeee5793ed0.gif

(3)如果直接把(2)的结果作为对列的引用或返回错误,利用Indirect函数可以正确的返回列的引用。经过这三步上述部分公式等价于直接对一列的引用。

(4)IF($A$2:$A$9=$G$2,ROW($A$2:$A$9),10000)判断每一个要班级是否等于要查找的内容,如果等于返回这个数据所在单元格的行号,如果不等于返回一个比较大的数值(在这里设置为10000,只要保证这行没有数据即可)。这样构成了一个行号和这个比较大的数值所构成的数组。

(5)利用small(步骤4构成的数组,row(A1)),分别提取第一、二、三小的数值。Row(A1)向下拖动时返回一个1、2、 3的数字序列,最终构成的是查找区域等于查找值的行和较大值10000构成的数组。

a01bbb63c78dc69518ba3c7fc14d02cb.gif

(6)利用Index函数提取(3)对列的引用,(5)所返回行构成的数组所对应的值。

(7)公式最后 &””,是因为10000行的内容是空白,公式会返回数字0。&””可以避免0的出现。

a71a6a8b9312433fcd22e618e0b3e62e.gif

三.注意事项:

1.在这里一定要注意单元格的引用方式。

2.这是一个函数比较多的综合应用。

3.数组公式输入时要以Ctrl+Shift+Enter结束。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值