這是一個使用 vlookup 函數嵌套 INDIRECT 函數來實現跨工作表數據引用的教程。
某小學決定要抽查本校三年級三個班的期末考情況,抽查方法為在每個班中抽查5名學生,將這15名學生的期末考情況匯總到一個表中考察。
方法/步驟
-
該小學現已在一個工作簿中建立《三年1班》、《三年2班》、《三年3班》3張工作表,如圖:
-
現在每班5名同學也已抽出,如圖:
-
現在要做的,就是要在《成績抽查》工作表里面,引用《三年1班》、《三年2班》、《三年3班》3張工作表中被抽查的學生的成績。應該怎么做呢?
-
使用 VLOOKUP 函數引用數據
根據常規的做法,我們可以使用 VLOOKUP 函數實現數據的引用。
我們可以在《成績抽查》工作表 D3 單元格中填寫公式:
=VLOOKUP(A3,三年1班!A3:E17,3,FALSE)
-
公式講解:
-
① VLOOKUP函數,表示搜索一個或多個數據列。
② 表示將單元格 A3 的值作為搜索內容。
③ 表示在工作表《三年1班》單元格 A3:E17 的范圍內搜索是否有與單元格 A3 的值相匹配的內容。
④ 如果找到了相匹配的值,則返回工作表《三年1班》單元格 A3:E17 第3列的對應內容。
⑤ "FALSE",表示查找時要求完全匹配,而不是模糊匹配。
-
我們把此公式填充到 D4:D17,執行結果如下:
-
為什么 D8:D17 單元格會出現 "#N/A" 這樣的結果呢?這是因為所要查找的數據分散在三個工作表,而原來的公式只是在《三年1班》這一個工作表中查找。因為在工作表《三年1班》中查找不到2班、3班的學生,所以公式結果出錯。那有沒有一個函數能和 VLOOKUP 函數結合在一起,幫助我們實現跨工作表的數據引用?
有的,那就是 INDIRECT 函數。
-
使用 INDIRECT 函數,使數據引用實現跨工作表
公式修改 我們現在考慮如何修改我們最先列出的那個公式。其中一個有效的方法,是把上一個公式中 "三年1班!A3:E17" 這一部分替換為 "INDIRECT($C3&"!A3:E17")" 。
公式講解:
-
我們先來看分式①。分式①是一個文本函數。表示將C3單元格和 "!A3:E17" 這個字符串聯合起來,組成一個新字符串。C3單元格中的數值為 "三年1班" ,和 "!A3:E17" 這個字符串組合后就成為 "三年1班!A3:E17" 。所以這個公式此時就相當於:
=INDIRECT("三年1班!A3:E17")
而它等價於:
=三年1班!A3:E1
-
所以我們就得到了我們所需要的單元格的引用。因此,我們將我們給出的第一個公式
=VLOOKUP(A3,三年1班!A3:E17,3,FALSE)
中 "三年1班!A3:E17" 這一部分替換為 "INDIRECT("三年1班!A3:E17")" ,就修改成為如下的新公式:
=VLOOKUP(A3,INDIRECT($C3&"!A3:E17"),3,FALSE)
我們將這個公式填充,公式就能根據C列中所列出的不同班級,在相應工作表中查找和引用相關數據,這樣顯示結果就正常了。
-
完成工作表我們再在E3填寫公式:
=VLOOKUP(A3,INDIRECT($C3&"!A3:E17"),4,FALSE)
在F3填寫公式:
=VLOOKUP(A3,INDIRECT($C3&"!A3:E17"),5,FALSE)
並填充,最終完成這一個數據表: