大家好!我是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的神奇我已經展示完了,夥伴們可以開始討論了,希望大家能有更好的辦法!


推薦閱讀:
查看原文 >>
相关文章