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