Excel高手必備的最為靈活實用的引用函數:Indirect
文:傲看今朝
一、什麼是Indirect函數?Indirect函數稱之為間接引用函數,間接引用當然是直接引用而言的。直接引用非常簡單,我在任意一個單元格輸入公式:「=a1」,那麼將得到A1單元格的值。而間接引用則完全不同。如果我想通過間接引用函數返回a1單元格的值,我輸入的公式為:=indirect("a1",1),這樣才能得到A1的值。那麼間接引用的優勢是是什麼呢?文章開頭我已經說了答案了,那就是非常靈活,大家注意到indirect函數的參數加了引號,表示是文本。既然是文本,我們就可以靈活地編輯引用地址。這一點是直接引用做不到的。下面簡單來看一下這個函數吧:
indirect函數
例如:在下圖中,我們輸入「=indirect("d1")」,公式將會直接計算d1單元格的值,也就是a1;而如果我們輸入「=indirect(d1)」,公式將直接引用D1單元格的內容「a1」,然後再返回"a1"單元格的值,最後得到的結果就是「indirect函數」(簡單來說計算了2次,第一次:由「=indirect(d1)」得到「=indirect("a1")」;第二次:由「=indirect("a1")」得到最終的值「indirect函數」)
indirect函數案例
indirect函數如此靈活,在工作中我們如何去應用,下面我們先來看一個簡單案例。
二、利用Indirect函數跨表統計工資如下圖所示,如何匯總不同sheet中的工資總額匯總到下表中呢?2010年到2012年三個sheet中的表格結構完全一樣,如下圖中右下角表格所示。
源數據
很多同學可能會想到把這三張表全部複製粘貼到一個sheet里在進行統計,然而在sheet很多的情況下,通過這樣的辦法效率實在是太低。毫不誇張地說,你有可能花上一個小時都干不完的活,Excel高手一條公式一分鐘都要不了就搞定了。下面我們來看看利用Indirect函數來做。
思路:首先得到每個sheet的B列,然後外層嵌套一個sum函數求和即可得到每年的匯總了。公式如下:
=SUM(INDIRECT(A12&"!B:B"))
向下拖拽公式,輕鬆完成個sheet的統計。
indirect函數,直接引用a12得到sheet的名稱,使用「&」鏈接上「!b:b」,引用的是X表格B列的區域,外加一個sum函數即可匯總每年的銷售總額。
三、利用indirect函數快速做數據錶轉置還是先來看看咱們的需求,如何將左側表格快速轉化右側表格的樣式呢?方法有很多,包括利用咱們之前介紹過的index函數都可以輕鬆做出來,下面我們來介紹如何利用Indirect函數來做。
從左邊的樣式到右邊的樣式
思路:
1.要得到右側的表格的樣式,我希望將左側表格的每一個單元格名稱直接放在右側表中,如下圖所示:
首先我們想辦法得到這樣的引用樣式
如何得到這樣的樣式呢?由於我們是由一列變成多行多列,因此列號不變,都是A,唯一變的是行號。我們要思考的是當我們向右填充公式時,行號能夠從左向右依次增大(1,2,3,4……),向下填充公式時,行號能夠以等差數列的方式增大(0,4,8,12)?針對第一個需求,我們可以用公式「=column(a1)」來做,針對第二個需求,我們可以用這樣一個公式「=(row(a1)-1)*4」來實現,因此要得到上圖中的地址,我們可以利用如下的公式得到:
="A"&33+column(a1)+(row(a1)-1)*4
2.在我們得到單元格地址外層嵌套一個indirect函數即可得到咱們右側圖表的樣式了。最終公式為:
=indirect(="A"&33+column(a1)+(row(a1)-1)*4)
一條公式搞定
輕鬆搞定了一列變多列的數據轉置了吧?
四、利用Indirect函數做多表數據條件匯總如下圖所示,如何快速統計:2010年到2012年這三年中,業績超過150萬的人數?
每個sheet的表格結構都和上圖右下角的一致
思路:
首先利用indirect函數得到所有sheetB列的數據,下一步利用countif函數進行人數統計就可以了。
1.這個引用唯一的變數是表格(年份數字是變數)名稱,我們可以利用函數row得到:=row(2010:2012)。因此我們的indirect函數可以這樣寫:
=indirect(row(2010:2012)&"年!b:b")
2.接下來就簡單了,在完成嵌套一個countif函數就可以完成條件計數的匯總了。最終公式如下:
{=COUNTIF(INDIRECT(ROW(2010:2012)&"年!b:b"),">150")}
推薦閱讀:
※陽宅實用風水教學10
※擺脫單身實用作戰指南
※我所記錄的git命令(非常實用)
※在家中放置這件東西,便可擋煞招財保平安!(非常實用)
※女生一定要知道的9個養顏習慣,男士一樣實用