INDIRECT函數(shù)怎么獲取中間值?INDIRECT函數(shù)接受2個(gè)參數(shù),第1個(gè)參數(shù)是代表單元格引用的字符串,第2個(gè)參數(shù)指定單元格引用的樣式,然后返回第1個(gè)參數(shù)指定的引用單元格中的數(shù)據(jù)。
INDIRECT函數(shù)的基本使用如圖1所示。
圖1
INDIRECT函數(shù)之美
INDIRECT函數(shù)分析其參數(shù)所引用的單元格并獲取該單元格中的值,參數(shù)中放置著數(shù)據(jù)的單元格地址,仿佛C語言中的指針,具有解析之美。
獲取指定的單元格地址所引用的單元格值
如下圖2所示的工作表,在單元格E8中是有效的單元格地址,單元格E9中的公式使用單元格E8作為參數(shù),獲取該單元格中的值所指定的單元格中的值:
=INDIRECT(E8)
當(dāng)單元格E8中的單元格地址改變時(shí),E9中獲取的值相應(yīng)變化。
圖2
如下圖3所示,將要獲取值的單元格行號列標(biāo)分別放在兩個(gè)單元格中,然后使用這兩個(gè)單元格作為INDIRECT函數(shù)的參數(shù)提取其組成的單元格地址中的值:
=INDIRECT(E8 & E9)
示例中是單元格B5中的值,你可以改變行號列標(biāo)返回不同的值。
圖3
總是引用固定的單元格
如圖4所示,使用公式:
=IF(ISBLANK(INDIRECT(“B5″)),”值為空“,”正常“)
無論刪除行還是插入行,或是將B5剪切并粘貼到其他地方,公式將總是指向單元格B5。
圖4
獲取命名區(qū)域引用的單元格的數(shù)據(jù)
如圖5所示,將每列數(shù)值以列標(biāo)題命名,設(shè)置單元格C4的數(shù)據(jù)有效性為序列,值為單元格區(qū)域B1:E1中的數(shù)據(jù),即為列區(qū)域的名稱。
在單元格B9中的公式為:
=C8 &”的銷量為:”
在單元格C9中的公式為:
=SUM(INDIRECT(C8))
這樣,選擇單元格C8下拉列表中的某值后,單元格C9會(huì)自動(dòng)進(jìn)行計(jì)算,B8也會(huì)相應(yīng)更新。
圖5
獲取另一工作表中的數(shù)據(jù)
如圖6所示,在班級工作表中,語文、數(shù)學(xué)、英語的平均分都在相同位置的單元格B2中,現(xiàn)在要將它們提取匯總到圖6的工作表中,在單元格B3中的公式為:
=INDIRECT(“‘” &B$2 & “‘!” & “B2”)
將其向右拖到單元格D3,即可獲取各個(gè)班級的語文平均分。
圖6
然而,由于單元格B2是硬編碼,將公式向下拖動(dòng)時(shí),仍然得到的是語文平均分。此時(shí),我們可以使用R1C1樣式的公式獲取數(shù)值,在單元格B3中輸入公式:
=INDIRECT(“‘” &B$2 & “‘!R[-1]C2”,FALSE)
向右向下拖動(dòng),即可獲取其他工作表中相應(yīng)的數(shù)據(jù)。
圖7
注:也可以使用CELL函數(shù)或者ADDRESS函數(shù)達(dá)到同樣的效果。
為ROW函數(shù)提供合法的參數(shù)
Excel不允許以下面的形式輸入:
ROW(1:LEN(A1))
此時(shí),可以通過INDIRECT函數(shù)來達(dá)到:
ROW(INDIRECT(“1:” & LEN(A1))
Excel會(huì)將其轉(zhuǎn)換為INDIRECT(“1:5”)并傳遞給ROW函數(shù)。
這還有一個(gè)好處,就是當(dāng)拖動(dòng)公式時(shí),由INDIRECT函數(shù)得到的數(shù)值不會(huì)隨單元格的變化發(fā)生變化,避免了公式因?yàn)橄鄬σ冒l(fā)生錯(cuò)誤。