Excel Indirect函數引用方法及與Address和Match組合批量提取數據

本文由作者(職場阿魏)原創發佈,歡迎大家轉發與分享!

在 Excel 中,Indirect函數用於返回文本字符串指定的單元格引用;它共有兩個參數,第一個參數是文本字符串,第二個參數是引用類型,特別要注意第一個參數必須為文本,否則會返回錯誤。它既能在同一工作簿中引用又能跨工作簿引用,但引用不能超過 Excel 允許的最大行數和最大列數;另外,Indirect函數通常與Address、Match、Row、Column函數組合使用實現在同一表格按條件批量提取數據和把數據從多個表格提取到一個表格;以下就是Excel用Indirect函數引用單元格和提取數據的具體操作方法,共有6個實例,實例操作中所用版本均為 Excel 2016。

一、Excel Indirect函數語法

1、表達式:INDIRECT(Ref_Text, [A1])

中文表達式:INDIRECT(引用文本, [引用類型])

2、說明:

A、Ref_Text 既可以是內部引用(在本工作簿中引用)又可以是外部引用(對另一工作簿的引用),如果是外部引用,所引用的工作簿必須打開,否則將返回引用錯誤 #Ref!;另外,Excel Web App 不支持外部引用。

B、Ref_Text 引用的單元格區域不能超出 Excel 允許的最大行數 1048576 或最大列數 16384(XFD),否則也返回 #REF! 錯誤;但 Excel 早期版本會忽略這一限制且返回一個值。

C、A1 有兩個可選值,即 True(或省略)和 False;如果為 True,則解釋為如 A1 這樣的引用;如果為 False,解釋為 R1C1,R 表示“行”,C 表示“列”,R1C1 表示對第一行第一列的引用,即 A1。無論哪種引用方式,如果引用單元格不存在,都將返回錯誤。

二、Excel Indirect函數的使用方法及實例

(一)A1 為 True(或省略)的實例

1、假如要返回任意指定單元格的內容。雙擊 A8 單元格,輸入公式 =Indirect(a4),按回車,返回 #REF! 錯誤;雙擊 A8,把公式改為 =INDIRECT("A"&4),按回車,返回 A4 中的內容“沙糖桔”;再次雙擊 A8,在公式後輸入 True,按回車,返回與上次一樣的結果;操作過程步驟,如圖1所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖1

2、公式說明:

A、公式 =Indirect(a4) 之所以會返回引用錯誤 #REF!,是因為Indirect函數的第一個參數 Ref_Text 必須為文本,而 a4 是對具體單元格的引用,a4 在公式中會解析為它的內容“沙糖桔”,按住 Alt,分別按 M 和 V 打開“公式求值”窗口後求值可知,演示如圖2所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖2

B、而公式 =INDIRECT("A"&4) 能返回正確的值,是因為 "A"&4 為文本,因此要使Indirect函數返回正確的值,它的第一個參數必須為文本。

(二)A1 為 False 的實例

1、雙擊 D8 單元格,輸入公式 =INDIRECT("R"&ROW(A5)&"C"&COLUMN(D1),FALSE),如圖3所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖3

2、按回車,返回第五行第四列(即 D5)中的數值 1558,如圖4所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖4

3、公式說明:ROW(A5) 返回 A5 的行號 5;COLUMN(D1) 返回 D1 的列號 4;則公式變為 =INDIRECT("R"&5&"C"&4,FALSE),進一步計算把每個字符連接起來,即 "R5C4",也就是引用第 5 行第 4 列,即 D5; R 和 C 分別代表行和列。

(三)引用 Excel 允許的最大行數或列數實列

1、雙擊 B2 單元格,把公式 =INDIRECT("A"&1048576) 複製到 B2,按回車,返回第一列最後一行的值 1048576;選中 A1,按快捷鍵 Ctrl +“向下方向鍵”定位到最後一行,可以看到 A1048576 中值正是返回值,當往下移動時,再也沒有出現空行,說明已到 Excel 允許的最大行數;再按 Ctrl +“向上方向鍵”重新回到第一行,雙擊 B3,輸入公式 =INDIRECT("XFD"&1),按回車,返回第一行最後一列的值 16384,按 Ctrl +“向右方向鍵”定位到最後一列,XFD1 的值恰好是返回值,並且 XFD 已經是 Excel 允許的最後一列,按 Ctrl +“向左方向鍵”定位回第一列;操作如圖5所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖5

2、上面的公式也可以用 R1C1 的樣式,例如返回 Excel 允許的最大行數和列數所對應的單元格中的值,公式可以這樣寫 =INDIRECT("R"&1048576&"C"&16384,FALSE),把公式複製到 XEY1048576 單元格,如圖6所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖6

按回車,返回 XFD1048576 中的數值 10065536,如圖7所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖7

(四)Indirect函數跨表引用實例

1、假如要在一個工作表(水果表1)中引用另一個工作表(水果表2)的 A2。雙擊“水果表1”的 B8 單元格,把公式 =INDIRECT("水果表2!"&"A2") 複製到 B8,按回車,返回“香蕉”,單擊標籤“水果表2”切換到它,A2 中的文字正是返回值;操作如圖8所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖8

2、用Indirect函數跨表引用(即外部引用),只需在所要引用的單元格前多加工作表名稱和感嘆號 !,並且要用雙擊引號把它們括起來,如演示中的“"水果表2!"&"A2"”。

三、Excel用Indirect函數批量提取數據

(一)Indirect + Row + Address + Column 組合實現把多個表格中指定行的數據提取到一個表格

1、假如要把三個表格(4月、5月和6月)中的第 5 行 B 到 D 列提取到“總表”。雙擊 B2 單元格,把公式 =INDIRECT(ROW(A4)&"月!"&ADDRESS(ROW($A$5),COLUMN(B$1))) 複製到 B2,按回車,返回表格“4月”中 B2 的名稱“紅色雪紡T恤”,選中 B2,把鼠標移到 B2 右下角的單元格填充柄上,鼠標變為粗體加號後,按住左鍵,往右拖,一直拖到 C2,則返回“紅色雪紡T恤”的價格和銷量;再把鼠標移到 C2 的單元格填充柄上,往下拖,則返回表格“5月和6月”第 5 行 B 列至 D 列的數據;操作步驟,如圖9所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖9

2、公式 =INDIRECT(ROW(A4)&"月!"&ADDRESS(ROW($A$5),COLUMN(B$1))) 說明:

A、ROW(A4) 返回 A4 的行號 4,這裡用於返回工作表“4月”中的 4,因為要提取數據的表格前面是 4、5、6,當往下拖時,A4 會變為 A5、A6,也就是自動變為其餘表格的名稱。

B、$A$5 中的 $ 表示絕對引用,A 和 5 前都有它,說明對列和行都是絕對引用,即無論是往右還是往下拖,A5 都不會變;ROW($A$5) 返回 A5 的行號 5,並且無論往哪拖,始終返回行號 5。

C、B$1 表示對列相對引用而對行絕對引用,往右拖時,B1 會變為 C1、D1 等,在這裡用於實現返回不同列的列號;COLUMN(B$1) 返回 B1 的列號 2,當拖到 C1 時,返回 C1 的列號 3,其它的以此類推。

D、則公式變為 =INDIRECT(4&"月!"&ADDRESS(5,2));ADDRESS(5,2) 中,5 為行號、2 為列號,其作用是返回第五行第二列的引用,即返回 $B$5;則公式變為 =INDIRECT(4&"月!"&$B$5),也就是返回工作表“4月”中 B5 的內容。

(二)Indirect + Match + Column 組合實現按條件批量提取數據

1、有一個月份銷量表,假如要求提取任意月份的銷量。雙擊 B12,把公式 =INDIRECT("r"&MATCH($A12,$A$1:$A$9,)&"c"&COLUMN(),0) 複製到 B12,按回車返回“T恤”“1月”的銷量 567;選中 B12,用往右拖的方法提取“1月”剩餘服裝的銷量,再用往下拖的方法提取“3月和7月”的銷量;操作步驟如圖10所示:

Excel Indirect函數引用方法及與Address和Match組合批量提取數據

圖10

2、公式 =INDIRECT("r"&MATCH($A12,$A$1:$A$9,)&"c"&COLUMN(),0) 說明

A、MATCH($A12,$A$1:$A$9,) 用於返回 A12(即“1月”) 在 A1:A9 中的位置,Match函數省略了最後一個參數,默認查找小於等於查找值“1月”的最小值,“1月”在 A1:A9 的第二個位置,因此返回 2,但 A1:A9 需要按升序排序,否則可能返回不正確的位置。

B、COLUMN() 返回公式所在列的列號,當公式在 B12,返回列號 2;當公式在 C12 時,返回列號 3;其它的以此類推。

C、則公式變為 =INDIRECT("r"&2&"c"&2,0),繼續計算變為 =INDIRECT("r2c2",0);r2c2 表示返回第二行第二列對應單元格的引用,即返回 B2 中的數值;參數 0 相當於 False,即把 "r2c2" 解釋為 R1C1 的樣式。

關注阿魏每日分享更多職場辦公技能,動起您的小手轉發一下!


分享到:


相關文章: