Hi,大家好,我是胖斯基
最近重溫了一遍金庸武俠巨著,芸芸衆生中有武俠大師,有凡夫俗子……
最為驚歎的還是那掃地神僧般的隐者,信手拈來,都是神兵利器,橫掃千軍……
然後有些人就開始YY了,仿佛自己若拿的手,也能一統江湖,殊不知,學的不精,也就是一棒槌,充其量也就一威風凜凜的裝飾……
同樣,在Excel中,也一樣如此!
比如函數:INDIRECT,乍一看不明白什麼意思,沒事,翻譯一下:間接的,不直截了當的……
可能更暈,還不如不看
于是乎
一把神兵利器就被你當做火燒棍給扔在了一邊……
那Ta有什麼用呢,看看我們财務人怎麼玩?
一、檢驗表名是否有誤
每逢月底,财務會向各部門或各分公司歸集整理數據。So,下發一套标準的Excel表,裡面設置好了表樣和公式,填報人直接填寫就可以了。
然後
總有一些别出心裁的人,把你Sheet表名給改動了,導緻了你回收回來後,多個工作簿在彙總時,無法利用現有的模闆公式去自動算數據
是不是有一種牙咬切齒的感覺?
那怎麼做呢?
比如:我們看看下面的情況
上圖中,下發的套表涵蓋了幾個頁簽,為了顯示方便,我們做了一個【稽核】的頁簽,就是為了來檢驗Sheet表名是否進行了修改
我們設置一個公式後,就會自動判别Sheet表名是否修改
怎麼樣,是不是很直觀,這樣無論是填報人,還是數據彙總人,一看【稽核】的頁簽,就知道原表是否發生了人為的變化,這樣避免了在數據彙總出錯時反過來再來檢查錯誤。
原理很簡單,就是利用了INDIRECT函數,公式如下:
這裡的重點是:INDIRECT(C5&"!A1"),C5裡面的内容是其中一個頁簽的名稱,所以C5&"!A1"就轉化為了201809銷售費用!A1,再利用INDIRECT來獲取該單元格的内容。
那如果201809銷售費用頁簽沒有更改名字,那INDIRECT(C5&"!A1")是可以獲取到内容(因為表存在),反之因為表不存在,則無法獲取,會提示錯誤。那之後再配合ISERROR和IF函數,再做邏輯性的判斷說明即可。
這裡為什麼要用INDIRECT呢?因為檢驗的是多張表,而每張表的表名不一樣,所以為了保持公式的靈活度,需要獲取表名的這個過程是個動态的,而為了把持這個動态,就不能直接去引用(這種方式是固定的),而需要間接去引用,而這個間接則就是利用INDIRECT。
可能還不太好理解,我們再看一個
二、跨表快速查詢信息
招采部門在執行采購時,前期會有一個核價過程,核價完成後,會指定某個供應商,此時的采購清單裡面每個物品涉及到不同供應商的報價,那如何簡化操作呢?
比如供應商的報價是這樣的:
你的采購清單是這樣的
裡面供應商列中,有不同的供應商,如果你采用采用最傳統的模式,直接指定明确的表進行VLOOKUP時,沒問題
比如第1行的公式:VLOOKUP(B2,供應商A!A:B,2,0),可以正确計算出結果,但是如果供應商現在換了呢?一個産品報價還好,如果涉及到多個産品報價的調整呢,再來大幅度修改VLOOKUP的公式,那可真就欲哭無淚了。
想想上面的例子,這裡的查詢是涉及到多個頁簽,不固定,那是否立馬想到了采用INDIRECT來動态獲取呢?
就像這樣:
來觀察一下其公式:
其固定和動态的的區别就在于INDIRECT,利用INDIRECT來獲取不同表的内容,這樣保障了公式的靈活性,無論選擇那家供應商報價,基本無障礙。
這些都是最基本的,那再看看财務人常處理的多表合并的問題
三、多表快速合并總表
比如:每個月度都有一個銷售業績表,每季度或半年度的數據要統一彙總,如下所示
可能你會每張表逐次複制粘貼
可能你會逐次用"="的模式跨表連接
但是會存在一個問題,如果表的數量少,還能接受。但是表的數量多的話,那隻能望山跑死馬,做表做到吐
那問題還是這個問題,依舊涉及到多表的問題,并且還是動态,So,又該INDIRECT函數登場
公式:=INDIRECT(B$1&"!B"&ROW())
觀察表頭,這裡表頭列的名稱和Sheet名稱信息一緻,故通過獲取列頭的名稱來跨表進行數據提取,So,這裡便用到了B$1&"!B",由于産品1到産品9是分布在每一行,所以這裡用了一個ROW()函數來動态獲取行,最終通過INDIRECT來合并處理,即可達到實現效果。
也許細心的你會發現,實際中,表格不會這麼理想化,有的月份産品沒有銷售業績,空行就直接忽略
那再用上面的公式則會出錯(因為行不在統一),那如何處理呢?
依然還是剛才的思路,采用INDIRECT進行動态處理,此時由于要涉及到産品匹配問題,需要用INDEX MATCH
公式:=IFERROR(INDEX(INDIRECT(B$1&"!B:B"),MATCH($A2,INDIRECT(B$1&"!A:A"),0)),"-")
這裡的核心還是INDIRECT,分别結合INDEX MATCH組合,其本質原理還是一樣,這裡就不做解釋了,可以思考一下。
綜上可知:
針對INDIRECT函數,其含義是:間接的,不直截了當的,即:再處理問題的時候,如果涉及到的是多頁簽,多表的情況下,可以采用INDIRECT動态模式,這樣就簡化了公式的處理,讓表格更具彈性
你學會了嗎?
更多精彩,敬請關注Excel老斯基
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!