Excel 中的高能函数 INDIRECT 介绍
原文標題:《用了十幾年 Excel,這個高能函數我居然才知道,不要太好用!》
INDIRECT 函數是 Excel 中一個非常高能的函數,同時,它的語法還非常簡單,僅有兩個參數,且第二個參數還能缺省。
關于 INDIRECT 函數,綠水零老師在《偷偷學會這個小眾高能函數,我再也沒有加過班……》一文中已經進行了詳細解讀。
但即便如此,一旦實操,INDIRECT 函數依然是很多小伙伴的「夢魘」!
本文,小花就為大家剖析 INDIRECT 函數的常見誤區,相信定能為你一掃陰霾!
1、關于引用樣式
問題來源某位粉絲的留言。
留言所指公式如下:
=INDIRECT("R"&MATCH(I3,A1:A11,0)&"C"&MATCH(I2,A1:F1,0),FALSE)
說實話,不止這位小伙伴,我們所有人幾乎都習慣了 INDIRECT 函數省略第二個參數 a1 的樣子,以至于它采用 R1C1 引用樣式時,竟對面不識!
Excel 單元格地址的引用樣式有兩種:
? A1 引用樣式:用英文字母表示列號,數字表示行號,默認為相對引用,用 "$" 表示絕對引用;
? R1C1 引用樣式:用 R + 數字表示行號,C + 數字表示列號,默認為絕對引用,用 "[]" 表示相對引用。
二者對照關系如下:
留言所指公式中,參數 a1 是 FALSE,表示采用 R1C1 引用樣式。兩個 MATCH 通過匹配條件值出現的位置序數值,連接 R 和 C,構成完整的 R1C1 引用樣式,INDIRECT 再根據該地址進行引用求值,最終完成交叉查詢!
公式如下:
=INDIRECT("R"&MATCH(I3,A1:A11,0)&"C"&MATCH(I2,A1:F1,0),FALSE)
所以,即便絕大多數時候,INDIRECT 的第二個參數 a1 都是省略的,我們還是不能將它輕易遺忘哦!
2、關于引用地址
INDIRECT 可以正確處理的,只有代表引用地址的文本,絕大多數的 INDIRECT 函數應用錯誤都集中在引用地址文本的構建問題上。
下圖列舉了幾種構建引用地址文本的方式。
簡單來說,前四種,無論是直接將 INDIRECT 函數的第一個參數 Ref_text 設置為文本、單元格引用還是公式,只要最終 Ref_text 能夠返回一個完整的、代表引用地址的文本,INDIRECT 函數就可以正確運算。
而第⑤種將需要引用的單元格 B1 直接作為參數 Ref_text,公式會先引用 B1 的值,得到 2,而數字「2」不是完整的引用地址,導致 INDIRECT 函數無法計算。
這與第②種情況直接將文本「B2」作為參數 Ref_text 不同,后者不會對文本「B2」進一步計算,文本「B2」即為引用地址。
而第①種情況中引用 A1 單元格作為參數 Ref_text,公式先引用 A1 的值,得到「B2」,也可以正確計算。
第⑤種情況正是 INDIRECT 函數應用中的常見錯誤,你踩過雷嗎?
3、關于單引號
使用 INDIRECT 函數進行跨表引用,是另一個錯誤的重災區!
哪怕明明引用地址清楚明白準確,INDIRECT 函數還是無法計算!
這是為什么呢?
錯誤公式如下:
=INDIRECT("1月廣州B2")
這是因為有些工作表名稱中含有一些特殊字符,如空格、星號等,導致 INDIRECT 函數無法識別表名,這時候需要用單引號「 ' 」將工作表名圈定,INDIRECT 函數才能正確識別。
修正公式如下:
=INDIRECT("'1月廣州'!B2")
那么怎么判斷是否需要添加單引號呢?很簡單,使用等號引用目標工作表的任意單元格,查看公式中是否包含單引號即可。
實際上,不需要單引號的情況使用單引號,也能夠正確計算。
所以,當需要引用多個工作表時,一律添加單引號不失為穩妥之舉!
4、關于跨多表引用
來看下面這個例子,小張需要計算特定三個城市中當日銷售額的最大值,即要引用不連續的多個表格的同一單元格,再求最大值。
小張辛苦設置好了跨表引用公式,但結果卻出錯了,我們來看下出了什么問題。
跨多表引用錯誤公式如下:
{=MAX(INDIRECT($D$2:$D$4&"!B2"))}
通過數組運算使得 INDIRECT ($D$2:$D$4&"!B2") 根據表明分別引用惠州、佛山和東莞三張表的 B2 單元格,再使用 MAX 函數取最大值,這個公式似乎并無不妥之處。
BUG 出在 INDIRECT 跨多表引用的結果是一個多維引用,MAX 函數無法對這一多維引用進行運算,僅能返回第一個值,即惠州!B2,導致結果出錯。
一般情況下,不使用特定函數,無法直接對多維引用進行運算。這些特定的函數包括 T 函數、N 函數、SUMIF 函數、SUBTOTAL 函數等等。
本例中,我們只需使用 N 函數將 INDIRECT 函數的多維引用結果轉化為數值形式,MAX 函數就可以正確運算了。
跨多表引用修正公式如下:
{=MAX(N(INDIRECT($D$2:$D$4&"!B2")))}
INDIRECT 函數跨多表引用中的門道非常深,有興趣了解的小伙伴可以期待小花后續的文章哦!
以上,就是小花拆解的 INDIRECT 函數常見誤區,包括:
? 忽略參數 a1 導致無法理解 R1C1 引用樣式下的 INDIRECT 函數;
? 錯誤構建導致參數 Ref_text 不是完整的、代表引用地址的文本;
? 沒有添加單引號導致 INDIRECT 函數無法正確識別表名;
? 未使用特定函數處理多維引用結果,導致嵌套的其他函數無法運算。
看過本文的小伙伴,可不能再踩坑 INDIRECT 函數咯!如有其他小花未提及的 INDIRECT 函數常見錯誤類型,歡迎留言與我們交流哦!
本文來自微信公眾號:秋葉 Excel (ID:excel100),作者:小花
總結
以上是生活随笔為你收集整理的Excel 中的高能函数 INDIRECT 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前捷豹路虎高管打造,Silence 宣布
- 下一篇: uimp是什么意思