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個公式保持正確的行引用,並繼續顯示正確的結果。