excel拆分合併技巧:將工作表合併成總表的方法

2021-01-06 部落窩教育H

編按:哈嘍,大家好!在上篇文章中我們給大家介紹了4種拆分工作表的方法,分別是函數、透視表、高級篩選、VBA,不知道小夥伴們學習得咋樣了?今天我們將學習合併工作表的三種方法,趕緊來看看吧!(由於合併工作表的第一種方法函數法,涉及的函數的應用相對複雜,在函數方面比較薄弱的同學,可以先看第二、三種方法,再繼續學習第一種~)

*********

【前言】

在上篇文章中,對於總表拆分為分表的操作一共給大家分享了四種方法,建議同學們一定要勤加練習,才能熟能生巧。既然說了拆分,那麼就沒有道理不說「合併」。同樣的,在日常工作中,合併各個分表到總表,也是經常會遇到的。

一、各個分表合併到總表——函數流

既然在「拆分」工作表的時候,我們使用了函數的方式,那麼就來再感受一下「合併」工作表的函數方式吧!依然使用之前的分表作為我們合併工作表的數據源。

步驟1:利用名稱管理器把工作表名稱建立為內存數組。按CTRL+F3,在彈出的「名稱管理器」窗口中,點擊「新建」,參照下圖進行設置:

函數:=GET.WORKBOOK(1)&T(NOW())

利用宏表函數「GET.WORKBOOK(1)」,得到工作薄內所有工作表名稱,並形成一個內存數組,把這個內存數組命名為「SHNAME」。T(NOW())是利用NOW函數的易失性,可以使宏表函數「GET.WORKBOOK(1)」自動更新。因為NOW函數返回的是時間格式的數值,T函數可以將數值轉換為空,而時間日期是特殊的數值,所以T(NOW())的結構將返回空文本「」,這樣返回值的內容就是工作表名稱了(注意這裡有坑,下面填坑)。

步驟2:新建一個空白工作表,命名為「匯總」,在《匯總》工作表的A1單元格中輸入「工作表」,在B1:K1區域複製粘貼分表的表頭欄位,在A2單元格輸入函數:

=MID(INDEX(SHNAME,INT((ROW(A1)-1)/15)+1),FIND("]",INDEX(SHNAME,INT((ROW(A1)-1)/15)+1))+1,99)。如下圖:

【函數解析】

這個嵌套函數的解析,要從上面提到的「坑」開始說起,GET.WORKBOOK(1)提取後的返回值是:[工作薄名稱]工作表名稱,這樣的格式。如果我們只需要提取工作表名稱,就要使用文本處理函數MID來提取(當然也可以用RIGHT函數,大家可以自己試一下),通過FIND函數找到「]」的起始位置再加1,就是工作表名稱的起始位置,用99作為MID函數的第三參數,來確定提取的字符串長度(如果提取長度超出實際長度,默認提取實際長度)。

這部分的內容,我們在製作excel中的目錄的文章中,詳細講解過,具體可以點擊連結《用GET.WORKBOOK函數實現excel批量生成帶超連結目錄且自動更新》,進行學習。

那麼這個函數最難理解的部分來了:

INDEX(SHNAME,INT((ROW(A1)-1)/15)+1)

SHNAME是什麼?是我們剛才在名稱管理器中設置的自定義名稱。在名稱管理器中使用了提取工作表名稱的宏表函數後,那麼就形成了一個內存數組,數組的內容是{分表1;分表2;分表3;匯總}四個內容,再用INDEX函數分別提取某個位置的內容(即提取出工作表名稱)。

因為每個分表中的明細數據都不可能是只有一條記錄條,所以我們對於SHNAME中的工作表名稱也不應該只提取一次,因此使用INT((ROW(A1)-1)/15)+1來確定我們引出分表名稱的次數。

對於這個函數的理解,需要空間感和數學思維相結合:

1:ROW(A1)=1, INT((ROW(A1)-1)/15)+1 = INT(0/15)+1 = 0+1 =1

2:ROW(A2)=2, INT((ROW(A2)-1)/15)+1 = INT(1/15)+1 = 0+1 =1

3:ROW(A3)=3, INT((ROW(A3)-1)/15)+1 = INT(2/15)+1 = 0+1 =1

15:ROW(A15)=15, INT((ROW(A15)-1)/15)+1 = INT(14/15)+1 = 0+1 =1

16:ROW(A16)=16, INT((ROW(A16)-1)/15)+1 = INT(15/15)+1 = 1+1 =2

17:ROW(A17)=17, INT((ROW(A17)-1)/15)+1 = INT(16/15)+1 = 1+1 =2

30:ROW(A30)=30, INT((ROW(A30)-1)/15)+1 = INT(29/15)+1 = 1+1 =2

31:ROW(A31)=31, INT((ROW(A31)-1)/15)+1 = INT(30/15)+1 = 2+1 =3

大家可以看出來,當行號減1等於我們設定的值「15」的時候,這個等式的值就會累加1 。這個15就是我們設定的最大引用記錄條的數值,算式就可以按這個數字,限定每個工作表名稱的引用次數。如果我們的各分表明細中最多的記錄條有6235行,那我們就設置這個值為INT((ROW(A1)-1)/6300)+1。

步驟3:刪除錯誤值和名為「匯總」的數據。

步驟4:在B2單元格中,根據分表名稱,提取分表中對應位置的數據,函數如下:

=INDIRECT(CONCATENATE($A2,"!",ADDRESS(COUNTIF($A$2:$A2,$A2)+1,COLUMN(A2))))

這三個函數其實都是常用函數,但是很多同學都不理解此時為什麼用這三個函數來嵌套,我們來看看下圖,估計會對同學們有所幫助。

B2單元格返回「《永達》表中的A2單元格」,如果直接引用的話,我們可以使用表達式「=永達!A2」。但是如果我們要動態的引用這個工作表的其他單元格地址,就需要使用上述函數過程:

第一階段——得到地址名:

ADDRESS(COUNTIF($A$2:$A2,$A2)+1,COLUMN(A2)),利用工作表名稱出現的次數,使用COUNTIF函數得到{1,2,3,…,15}的行號,再加1,就能得到對應目標工作表的引用行號,再使用COLUMN函數得到對應的列號。最後通過ADDRESS函數,返回行號列號確定的單元格地址。

第二階段——確定此單元格地址,屬於哪個工作表:

CONCATENATE($A2,"!",ADDRESS(COUNTIF($A$2:$A2,$A2)+1,COLUMN(A2))),CONCATENATE函數是一個連接文本的函數,A2單元格是工作表名稱「永達」,所以此函數運行後,就得到了「永達!A2」的字符串。

第三階段——使字符串形成引用地址:

INDIRECT函數引用連接,並返回引用地址值的函數。用INDIRECT函數引用剛才的「永達!A2」字符串,得到對應的單元格內容。

最後,將此函數向左填充、再向下填充,就可以得到我們各個分表的明細匯總了。

步驟5:因為我們使用了宏表函數,所以保存時,我們要另存為.XLSM格式的文件。

【小結】

從上圖中我們不難看出,如果對應的分表數據沒有15行的時候,那麼就會顯示0;而如果對應的分表數據超出設定的15行,那麼數據就會引出不全。

所以我們既要考慮最大行數的設定,做出匯總表後,還要篩選出為0的行進行刪除,這樣就會給我們後續的工作增加很多操作的步驟。

二、各個分表合併到總表——PQ流

PQ是什麼?PQ是POWER QUERY的縮寫(以下簡稱PQ),是EXCEL中一個查詢模塊,對於不是像作者這樣需要寫文章、寫教程的同學來說,咱們不用知道它的各種解釋,只要知道它的功能即可。就像工作表函數,我們知道IF、SUM如何使用就行,沒有必要知道這些內置函數存儲在EXCEL的什麼位置。

在EXCEL2016中PQ是自帶的,如下圖:

EXCEL2010版之前的版本是沒有PQ的,EXCEL2010和EXCEL2013版需要下載PQ插件。

步驟1:啟動PQ編輯器,如下圖:

步驟2:在「主頁」選項卡中,點選「新建源」——「文件」——「EXCEL」,在彈出的「導入數據」窗口中,按路徑找到需要合併分表的源文件,點擊「導入」按鈕,彈出「導航器」窗口:

步驟3:在「導航器」窗口中,勾選「選擇多項」,然後複選所有分表,再點擊「確定」按鈕將數據導入到PQ中,如下圖:

步驟4:在「主頁」選項卡下的「組合」下拉菜單中,點擊「追加查詢」功能按鍵,彈出「追加」窗口。

將所有非當前的工作表,逐一全部追加到右面的列表框中,點擊「確定」按鈕,此時就將其他的工作表都追加到了當前的工作表中。

步驟5:點擊「主頁」中左上角的「關閉並上載」按鍵,將新建查詢導入此EXCEL工作薄中,如下圖:

步驟6:保留下匯總的工作表,刪除其他的工作表,任務就完成了。

【小結】

沒有複雜的函數,所有的操作只需要滑鼠點擊即可完成,是不是很方便,那麼以後如果有再多的工作表合併的問題,都是分分鐘搞定了吧。

三、各個分表合併到總表——VBA流

「沒有完美的方法,只有完美的操作體系」。EXCEL帶給我們的好像就是這麼一個完美的操作體系,永遠都是「一題多解」,如果當你既不想費勁去寫函數,還想一勞永逸的合併工作表,那就採用VBA的方式來處理。

有很多同學都是「談VBA色變」,但是作者E圖表述要說,當你學了VBA才會真正的掌握EXCEL這個軟體。

按ALT+F11組合鍵打開VBE界面,新建「模塊1」,在代碼區域輸入下面的代碼,操作一波看看吧。

Sub 合併工作表()

Sheets("匯總").Range("A2:J65000").ClearContents

For Each sh In Worksheets

If sh.Name <> "匯總" Then

a = Sheets("匯總").Range("A65000").End(3).Row + 1

b = sh.Range("A65000").End(3).Row

sh.Range("A2:J" & b).Copy Sheets("匯總").Cells(a, 1)

End If

Next

End Sub

代碼中的Range是單元格區域對象的書寫方式,括號中的J代表數據區域的末列,同學們如果操作自己的表格的時候,可以改成自己數據的末列列標,並把代碼中的「匯總」改為自己匯總表的名稱,即可。

【編後語】

同工作薄的「拆分工作表」和「合併工作表」的方法給大家列舉了很多很多,在實際工作中,無論你掌握了哪種方法都可以讓你有的放矢的去做,最怕的就是你沒有一個方法傍身,那就真的無從下手了。

****部落窩教育-excel表格合併技巧***

原創:E圖表述/部落窩教育(未經同意,請勿轉載)

相關焦點

  • excel拆分合併技巧:將總表拆分成工作表的方法
    在平時的工作中,我們經常會遇到將工作表拆分,或者合併的問題。大多數人還只會用複製粘貼的方式來解決,雖然操作簡單,但是當遇到數據量較大的情況,無疑會拖垮我們的工作效率。其實工作表的拆分和合併沒有大家想像中的那麼難,本系列將分為上下兩篇教程,分別講解工作表拆分與合併的方法,本篇是上篇,將給大家帶來4種工作表拆分的方法,趕緊來看看吧!
  • Microsoft Excel怎麼按條件快速將總表數據拆分成多個工作表?
    在使用Microsoft Excel統計數據時,一般情況下會將各類數據匯總到一個工作表中。當需要分類數據時,使用【篩選】功能的話重複性操作太多,還需要將篩選後的數據進行複製粘貼,有什麼辦法能夠按條件快速的將總表數據拆分成多個工作表?這個時候就需要用到強大的Visual Basic for Applications(VBA)了。
  • 合併/拆分 Excel?Python、VBA輕鬆自動化
    作者 | Ryoko來源 | 凹凸數據當你收集了 n 個人的 EXCEL 記錄表,需要將它們匯成一個總表時你會怎麼做呢" & Num & "個工作薄下的全部工作表。/', '\\\\') # 傳入pd庫read_excel方法的路徑,含文件名 dir = p[ : p.rfind('\\') + 1 ] # 輸出被拆分表的目錄,不含文件名 sheetname = path[ path.rfind('/') + 1 :].strip('.xlsx').strip('.xlx') # 無後綴的文件名 data = pd.read_excel(p) # 數據 nrows
  • Microsoft Excel怎麼快速合併當前工作簿下的所有工作表?
    Microsoft Excel怎麼按條件快速將總表數據拆分成多個工作表?此篇文章介紹了怎麼按條件快速將總表數據拆分成多個工作表,那麼反過來,怎麼將Microsoft Excel工作薄中的工作表合併到一個工作表中呢?最簡單的方法就是複製粘貼了,如果工作表過多,合併起來工作量就很大了,這個時候就需要用到強大的Visual Basic for Applications(VBA)了。
  • 3分鐘就能夠搞定,快速合併多個excel工作表
    我們在實際工作中,有時候需要將多個excel工作表合併到一起,這次我們要分享的一個excel小技巧,不需要使用到VBA,我們只需要通過一系列操作就可以使多個工作簿裡面的多個工作表,一次性的合併到一個工作簿裡面。
  • 一鍵批量拆分Excel工作表「模板下載」
    今年5月份我們在Excel表哥微信公眾號平臺首發了一系列工作表、工作簿合併的文章。從合併相同內容的單元格到合併多個工作表直至批量合併多個Excel工作簿,所有的操作只需要一鍵!有讀者給表哥留言既然有合併工作簿工作表的工具,怎麼能沒有一鍵拆分的工具呢?讀者朋友的提問其實也讓我們看到了大家平時工作上的需求,Excel表哥公眾號也樂於幫助讀者解決Excel應用方面的任何問題。
  • Excel小技巧:vlookup函數合併多個工作表
    有時候會經常從同事那裡收集的工作表需要匯總在同一張工作表中,使用vlookup函數教你快速合併:首先如果我們先要查詢1月的利潤表在F5中輸入1月的公式=VLOOKUP($E5,'2019年1月'!A:B,2,0)從此可以看出變化的就是工作表的名稱,我們就使用一個indirect函數來構造出來就行了因此F5中的公式就變為=VLOOKUP($E5,INDIRECT(F$4&"!
  • EXCEL小技巧:教你如何一鍵合併多個工作簿
    1、2、3三個具有相同結構的工作表的數據全部合併到匯總到名為「匯總」的工作表裡。有人說,我也可以把每個分表裡的工作表一個一個地複製到一個工作表裡合併也可以實現,是的,但是如果工作分表要是多的話,這種原始的手工操作不但工作量大、而且麻煩,更容易出錯,也浪費了EXCEL的強大功能,可惜了啊!
  • 如何將 Excel 合併單元格內容按換行符拆分成多行?
    如何按換行符將合併單元格內容拆分為多行?大家首先想到的可能是藉助記事本,具體操作方法可參閱 將Excel單元格中的內容按行拆分成多個單元格。除了記事本以外,還有沒有更簡單的方法?有,那就是我一直推崇的 Power Query,不僅更快,還一勞永逸,今後數據表若有新增合併區域,只要刷新目標表格就能完成拆分。案例:將下圖 1 中所有合併的姓名單元格拆分成開來,每個姓名一行,排列成與班級一一對應的表格。
  • Excel總表更新、多個分表隨之自動更新,不用VBA、不用函數
    合併多個分表到一個總表中,這樣的操作很常見。但,有時候我們也需要反過來,即將一個總表拆分成多個子表,並且在總表中錄入/修改數據後,每個分表都可以自動更新數據。如以下資金流動表。除了資金流水,我們還特別關心哪些客戶已經結清欠款,哪些客戶部分還清,哪些還欠著全款。
  • Excel小技巧:使用VBA,10秒鐘搞定拆分工作表(內附代碼)
    前面我們發布過將多個工作簿中的工作表合併到一個工作表簿中,就有網友提了一個問題,如何講一個工作表拆分成多個工作表,其實實現的方法很多,如果數據少的話,我們直接採用篩選後複製粘貼就可以了,如果數據比較多,或者是日常工作的話,每天這樣複製粘貼,就很麻煩~,或者我們使用透視表也可以。。
  • excel在不同工作表中對相同類型的數量進行合併計算
    excel在不同工作表中對相同類型的數量進行合併計算合併計算不僅可以計算同一張工作表中進行計算,也可以在不同工作表中的相同區域和類型進行合併計算。解決方法:在不同工作表中對組數相同數據進行合併計算的操作方法第一步. 在【合計表格】工作表選擇【需要求和的部分】單元格區域,如圖:第二步. 再彈出【合併計算】對話框,在【引用位置】文本框中引用原數據表中求和區域,然後單擊【添加】如圖:第三步.
  • Excel小技巧之Ctrl+E,快速實現合併、拆分和提取
    #excel技巧#在Excel中,用好一些小技巧,可以幫助我們節省大量的編緝時間。在我們實際操作中經常會碰到以下幾種情況:又或者是這樣的:還在用複製、粘貼的方法一個一個去做嗎?這樣無疑需要大量的工作量及時間,效率低下。今天給大家介紹的小技巧是Ctrl+E快捷鍵,它可以幫你迅速的實現合併、拆分和提取功能,我們可以一起看下視頻。
  • excel匯總多個工作表數據的神器——合併計算
    在excel中,經常會遇到多個表格的數據需要匯總,但是有時候每個表格的順序、項目不一定完全相同,比如下圖中,動圖一是五個不完全相同的工作表,如何將五個工作表的數據匯總到一個工作表中(圖二所示),並對這些數據進行求和或者其他運算呢?這裡就為大家介紹一下合併計算的功能。
  • 「Excel技巧」利用數據透視表快速將一個匯總表拆分成多個工作表
    今天要說的是,如何根據某一列將一個Exce工作表拆分成多個工作表。舉慄子,以下這麼一份總表,需要按照班級將其拆分成多個單獨的表,一個班級為一個表。你會按照班級一個一個地篩選複製出來嗎?如果班級多,有幾十個班級,顯然這種方法就不適用。那麼,怎麼操作比較省時省力?Excel的數據透視表功能就可以幫我們完成這個工作。
  • 3秒鐘快速批量創建100個Excel工作表
    前面幾節,我們分享了Excel批量操作中,最經常用到的工作表合併與拆分的應用技巧,這一節,我們來分享工作表的批量創建技巧。一、應用場景有時候,我們因為工作需要,需要在同一個Excel工作簿中創建幾十甚至上百個工作表,如果手工一個一個點新建工作表的按鈕,那麼滑鼠不廢,手指頭也就廢了。別再手動創建Sheet了,這就教你快速自定義批量生成N多個工作表的方法.
  • Excel|VBA(4)——合併工作表
    一起來學office,提高辦公技能問題情境大體歸納一下,韓老師講過如下幾種多工作表合併的方法:一文中,講了利用SQL語句進行多工作表合併;在在一文中 ,講了利用數據查詢進行工作表合併;一文中,講述了利用數據透視表進行工作表合併計算
  • Python和VBA巔峰對決-工作表的合併
    一起學習Python辦公自動化,教你快速學習Python的方法,可以站內私信我。一起加油!!!工作中,很多小夥伴都會遇到一些需求,將一份Excel文檔按照每個部門整理的工作表匯總為一份總的工作表。每個工作表格式都一樣,但是數量很多。傳統的方法就是手工打開文件,拷貝黏貼。費力耗時。
  • EXCEL多工作表動態合併,其實很簡單
    小夥伴們好啊,今天老祝和大家分享一個動態合併多個工作表的技巧。很多時候,咱們的數據是按照部門或是月份等項目,分別存放在不同工作表中的,要對這些數據進行分析匯總的時候,需要先將不同工作表中的數據合併到一起才可以。就像下圖所示的數據,三個工作表中是某品牌的商品,在不同區域的銷售記錄。
  • EXCEL多個工作簿快速合併到一個工作表,一鍵搞定!
    快到年底了,有小夥伴提出了如何快速將12個月的數據合併到一個工作表問題,比如將每個月不同銷售員不同產品的銷售數據匯總到一個工作表。今天我們就來分享一個快速將多個結構相同的工作簿數據匯總到一個工作表的方法,快速簡單,一鍵搞定,提問的小夥伴速來圍觀!