大家好!我是Excel表哥新秀77,这两天光顾着发视频了,都没怎么发关于Excel应用方面的文章,很是愧疚啊!原因就是头条里面视频远比文章要火得快,要是只写文章估计会饿死。嘿嘿,其实也没那么夸张了。因为毕竟现在不是指着头条吃饭呢。
话不多说言归正传。Excel里查找的函数估计大家都知道的不少了。诸如lookup,vlookup,hlookup,index+matche,等等。它们都各自有各自的应用范围,在各自的领域施展拳脚。今天我要说的就是index+match,但也不全是它,因为我还要把它小小的否定一下,给match换个搭档——indirect。indirect这个函数我也是刚刚接触,了解的不是很深。让我讲肯定也说不大明白,伙伴们可以去帮助里看看,然后我们一起探讨。今天我会用我身边的一个实例来和大家分享如何用indirect+match来替换index+match。开战!
实例就是我经常做的出库查询如下分别为库存表和出库单
出库单
库存表
我们要做的就是在出库单库位那里根据订单指定的代码和周期在库存表里面找到对应的库位,然后反馈到出库单的库位单元格中。即多条件查找。当然多条件查找,首先想到的就是index+match。我们在出库单的F8单元格里输入=INDEX(库存表!F:F,MATCH(A8&E8,库存表!A:A&库存表!E:E,0)),如下
index+match
通常我们输入完函数都是按回车或是到fx左边那里打钩,但是index不行,因为它是数组函数,直接回车会出现错误
直接回车出现错误
这个时候我们需要按Ctrl+shift+enter三键才可以使公式正常显示,然后我们再将公司向下填充,那么库位就已经自动查找出来了。
三键显示正常
填充后效果
到这里,是不是就已经行了呢?目的已经达成了。不,不是的。现在的数据是我精简过的,实际当中我的库存表数据可不止这么一点,出库的代码个数也有上百个。况且我许的查找条件可能还会增加,如果都用数组函数的话,那么这个表格就只能龟速运转了。数组函数就这一点不好,多了就卡。所以接下来我要用indirect来替换index,看我的!
首先我们复制已经写好的match函数的公式MATCH(A8&E8,库存表!A:A&库存表!E:E,0),点击公式菜单栏下的名称管理器
名称管理器
然后新建一个行号的名称,并把代码复制到引用位置=号的后面,如下图,然后确定,退出即可
新建一个行号的名称
最后再返回到F8单元格,输入公式=INDIRECT('库存表!F'&行号),注意里面标点符号,一定要是英文状态下的。公式里的行号就是我们刚刚新建的名称。
以上操作完成后,直接回车即可,我们会发现出现的值和刚才index是一样的
indirect效果
再向下填充,结果也都一样
填充后
既然结果一模一样,那我们就可以不用index改用indirect了。毕竟后者不是数组,反应那是杠杠的快。
好了,到这里indirect的神奇我已经展示完了,伙伴们可以开始讨论了,希望大家能有更好的办法!
联系客服