要求:在一個工作簿種有很多個工作表在相同的單元格中儲存著需要匯總的數據,根據需求要把這些數據匯總到同一張工作表裡,合併後的效果如下圖所示。
操作步驟:
一.使用宏表函數批量獲取工作表名稱
切換到公式選項卡---點擊自定義名稱---在名稱框裡輸入gzbm、範圍選擇工作簿、引用位置裡輸入公式=get.workbook(1)----點擊確定。
2再需要匯總的工作表A1單元格裡輸入公式=INDEX(gzbm,ROW(A1))---向下拖動滑鼠填充公式---將所有的工作表名粘貼為數值---打開替換窗口將工作簿名替換為空白---點擊確定.。
二.修改匯總工作表的表頭、在對應單元格輸入公式(B2單元格輸入="="&A2&"!A2",C2單元格輸入="="&A2&"!B2")---向下拖動滑鼠填充公式---打開替換窗口(查找內容=,替換為=)---點擊確定。
三.打開名稱管理器(摁住鍵盤上的Ctrl+F3鍵)將定義宏表函數刪除,否則保存的時候會提示錯誤。
說明:
1. 宏表函數已經逐步被VBA代碼取代,但是為了兼容性在後續更新的版本中還可以使用。
2. 宏表函數get.workbook(1)的功能是批量獲取工作表名稱,必要要通過定義名稱來使用。
3. INDEX(gzbm,ROW(A1))的第一個參數gzbm是包含所有工作表名的數組;ROW(A1)返回A1單元格的行號也就是數字1、向下填充時會返回一個1、2、3的數字數列:
配合INDEX函數就可以返回所有工作表的名稱。
4. 公式"="&A2&"!A2"和公式"="&A2&"!B2"前面A2是引用對應單元的工作表名,後面的!A2和!B2是對單元格的引用。
注意事項:
1. 一定不要忽略兩步粘貼為數值的操作。
2. 不要忽略將=替換為=,這一步是為了更新數據。
3. 最後要刪除定義的名稱。