INDIRECT函數(shù)接受2個參數(shù),第1個參數(shù)是代表單元格引用的字符串,第2個參數(shù)指定單元格引用的樣式,然后返回第1個參數(shù)指定的引用單元格中的數(shù)據(jù)。 INDIRECT函數(shù)的基本使用如圖1所示。 圖1 一鍵直達(dá) >> Excel函數(shù)學(xué)習(xí)14:INDIRECT函數(shù)
INDIRECT函數(shù)之美
INDIRECT函數(shù)分析其參數(shù)所引用的單元格并獲取該單元格中的值,參數(shù)中放置著數(shù)據(jù)的單元格地址,仿佛C語言中的指針,具有解析之美。
獲取指定的單元格地址所引用的單元格值 如下圖2所示的工作表,在單元格E8中是有效的單元格地址,單元格E9中的公式使用單元格E8作為參數(shù),獲取該單元格中的值所指定的單元格中的值: =INDIRECT(E8) 當(dāng)單元格E8中的單元格地址改變時,E9中獲取的值相應(yīng)變化。 圖2
如下圖3所示,將要獲取值的單元格行號列標(biāo)分別放在兩個單元格中,然后使用這兩個單元格作為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會自動進(jìn)行計算,B8也會相應(yīng)更新。 圖5
獲取另一工作表中的數(shù)據(jù) 如圖6所示,在班級工作表中,語文、數(shù)學(xué)、英語的平均分都在相同位置的單元格B2中,現(xiàn)在要將它們提取匯總到圖6的工作表中,在單元格B3中的公式為: =INDIRECT(''' &B$2 & ''!' & 'B2') 將其向右拖到單元格D3,即可獲取各個班級的語文平均分。 圖6
然而,由于單元格B2是硬編碼,將公式向下拖動時,仍然得到的是語文平均分。此時,我們可以使用R1C1樣式的公式獲取數(shù)值,在單元格B3中輸入公式: =INDIRECT(''' &B$2 & ''!R[-1]C2',FALSE) 向右向下拖動,即可獲取其他工作表中相應(yīng)的數(shù)據(jù)。 圖7
注:也可以使用CELL函數(shù)或者ADDRESS函數(shù)達(dá)到同樣的效果。
為ROW函數(shù)提供合法的參數(shù) Excel不允許以下面的形式輸入: ROW(1:LEN(A1)) 此時,可以通過INDIRECT函數(shù)來達(dá)到: ROW(INDIRECT(“1:” & LEN(A1)) Excel會將其轉(zhuǎn)換為INDIRECT(“1:5”)并傳遞給ROW函數(shù)。 這還有一個好處,就是當(dāng)拖動公式時,由INDIRECT函數(shù)得到的數(shù)值不會隨單元格的變化發(fā)生變化,避免了公式因為相對引用發(fā)生錯誤。
結(jié)語 INDIRECT函數(shù)獲取參數(shù)指定的單元格中的值,并且能夠解析命名區(qū)域,引用其他工作表,這些都為數(shù)據(jù)的獲取提供了想像空間。并且,INDIRECT函數(shù)為VLOOKUP函數(shù)或者SUMIF函數(shù)等提供單元格區(qū)域,為ROW函數(shù)提供合法的參數(shù),讓公式發(fā)揮出更強(qiáng)大的威力。 本文屬原創(chuàng)文章,轉(zhuǎn)載請注明出處。 歡迎在下面留言,完善本文內(nèi)容,讓更多的人學(xué)到更完美的知識。 |
|