Excel表格indirect函式詳解(Excel函式indirect的用法)

INDIRECT函式的用法介紹

INDIRECT函式的作用是返回由文字字串指定的引用。先舉個例子,來點感性認識:

如下圖所示,單元格D2中的公式為:

= INDIRECT(A2)

單元格D2中使用公式返回A2的引用值,單元格 A2又引用了B2,B2的值為44.5678,所以D2返回44.5678。如果想直接返回A2單元格中的內容,將公式寫為

= INDIRECT("A2"),也就是將A2加上""即可。

1.什麼情況下使用INDIRECT函式?

INDIRECT函式返回由文字字串指定的引用,可以用於:建立開始部分固定的引用;建立對靜態命名區域的引用;建立固定的數值組。

INDIRECT函式的語法如下:

INDIRECT(ref_text,a1)

ref_text是代表引用的文字字串

如果a1為TRUE或者忽略,使用A1引用樣式;如果為FALSE,使用R1C1引用樣式

注意:

(1)INDIRECT函式是易失的,因此如果在許多公式中使用,它會使工作簿變慢。

(2)如果INDIRECT函式建立對另一個工作簿的引用,那麼該工作簿必須開啟,否則公式的結果為#REF!錯誤。

(3)如果INDIRECT函式建立所限制的行和列之外的區域的引用,公式將出現#REF!錯誤。

(4)INDIRECT函式不能對動態命名區域進行引用

2. 示例:建立開始部分固定的引用

在下面的示例中,列B和列C有相同的數字,使用SUM函式求得的和也是相同的。然而,所使用的公式稍微有點不同。在單元格B7中,公式為:

=SUM(B2:B7)

在單元格C7中,INDIRECT函式建立對開始單元格C2的引用:

= SUM(INDIRECT("C2"):C6)

如果在列表的頂部插入一行,例如輸入"高俅"和相關的銷售值,列B中的和不會改變,但公式發生了變化,根據被插入的行進行了調整:

=SUM(B3:B7)

然而,INDIRECT函式鎖定開始單元格為C2,因此高俅的銷售額被自動包括在C列的彙總單元格中。結束單元格改變,但是開始單元格沒有受影響。

= SUM(INDIRECT("C2"):C7)

3. 建立對靜態命名區域的引用

INDIRECT函式也可以建立對命名區域的引用。在本例中,黃色單元格區域被命名為NumList,在列A中也有一個基於該列的數值數的動態區域Numlistdyn。

通過在SUM函式中使用區域名稱,每個單元格都能夠計算總和,正如在單元格D3和D4中所看到的:

=SUM(NumList) 或 =SUM(NumListDyn)

換個方式,使用INDIRECT來引用單元格名稱,例如,使用在單元格C7中顯示的名稱NumList,單元格D7中的公式是:

=SUM(INDIRECT(C7))

由於INDIRECT函式不能夠解決對動態區域的引用,因此當公式向下複製到單元格D8中時,結果顯示#REF!錯誤。

4. 建立固定的數值組

在一些公式中,需要一組數值,如下圖所示,我們想求列B中最大的3個數值的平均值。在公式中,可以輸入數值,如單元格D4中所示:

= AVERAGE(LARGE(B1:B9,{1,2,3}))

如果需要更多的一組數值,那麼可能不想輸入這些數值。此時,可以使用ROW函式,如在單元格D5中使用的陣列公式:

{=AVERAGE(LARGE(B1:B9,ROW(1:3)))}

還可以將ROW函式和INDIRECT函式聯合使用,也是陣列公式:

{=AVERAGE(LARGE(B1:B9,ROW(INDIRECT("1:3"))))}

上述3個公式的結果相同。

然而,如果在工作表的頂部插入行,第二個公式返回不正確的結果,因為行數被調整了。現在,顯示了第2、第3、第4個最大數值的平均值,而不是求最大的3個數值的平均值。

使用INDIRECT函式,第3個公式保持正確的行引用,並繼續顯示正確的結果。