VBA拆分工作表

2021-01-09 騰訊網

VBA拆分工作表

Excel界面操作為我們提供了各種強大的功能,我們首先應該充分利用Excel中的內置功能,在利用VBA編程時也是如此,這是我們學習Excel VBA的原則之一。

本節實例:

在工作中,我們可能會遇到一張很複雜、繁冗的表格,表格中的數據時公司各個部門的詳細數據清單,我們的任務是:把這個總數據表分解成一張張易於分析的數據表。當表格內容很多時,利用VBA是一種不錯的方法。

假設有如圖所示的數據,我們的任務是按照「地區」把原始數據拆分成一個工作表。我們該如何做呢?

常規思路

首先用VBA按照「地區」列對原始數據排序;然後用VBA的循環處理結構查看每一條數據,如果「地區」列中當前單元格和上一個單元格中的地區有所不同,就新建一個工作表來保存該地區的數據。

另一種思路

利用數據工作表的功能實現數據拆分。在數據透視表中,如果雙擊數據區域中的某一個單元格,在默認情況下,Excel會自動生成一個單獨的該單元格背後所用到的所有原始數據的工作表。下面我們通過實際操作來了解這個功能,並錄製一個宏作為VBA解決方案的起點。

具體操作

單擊「開發工具」——「代碼」功能組中的「錄製宏」按鈕,按照下述步驟開始錄製宏。注意,為了讓Excel宏儘量少的錄製無關代碼,我們應該儘量減少不必要的動作。

首先將光標置於數據區域中的任意單元格,按快捷鍵「Ctrl + A」選擇整個數據區域,然後單擊「插入」——「數據透視表」——「數據透視表」,在「創建數據透視表」對話框中進行如下設置。

單擊「確定」按鈕,在工作表右側彈出「數據透視表欄位列表」窗格。進行數據透視表布局設置,此時我們得到的數據透視表如下圖所示:

下面我們開始演示一個常用的操作技巧

操作技巧

雙擊數據透視表「數據區域」中的任意一個單元格,比如B5單元格。B5單元格對應的是「東部」區域的所有原始數據。如果雙擊「B6」單元格,我們又得到了「南部」區域的所有原始數據工作表。我們將用VBA調用Excel數據透視表的這個功能,將原始數據拆分成多個工作表。

現在,我們單擊「開發工具」——「代碼」功能組中的「停止錄製」按鈕,停止宏的錄製,然後按快捷鍵「ALT + F11」進入Excel VBA的開發環境,在「模塊一」中,我們看到剛才錄製的代碼如下:

在上述Excel宏所錄製的代碼中,我們第一個要關心的是加粗部分的代碼,這段代碼的作用是在計算機內存中創建一個「數據透視表數據加工區(Pivot Cache)」

這裡的ActiveWorkbook.PivotCaches的Create方法有多個參數,其中的SourceData:="表1"代表數據透視表的原始數據範圍,是一個表示數據範圍地址的字符串。為了增加程序的靈活性,我們在編寫VBA代碼時,根據原始數據範圍的大小自動生成這個字符串參數,如果原始數據所在的工作表叫做「Sheet1」,那麼表示原屬數據範圍的地址字符串可以由如下代碼得到:

strDataAddr = "sheet1!" & Worksheets("sheet1").UsedRange.Address

我們再定義一個Excel工作表對象pivotSht,用來代表數據透視表所在的工作表,那麼創建Pivot Cache代碼的另一個表示數據透視表在工作表位置的參數TableDestination:="Sheet4!R3C1"中的"Sheet4!R3C1"就可以修改為pivotSht.Name & 「!R3C1」 ,這裡的R3C1是Excel單元格地址的另一種表示方法,代表第3行(R代表Row)

第1列(C代表Column)處的單元格。

宏中最後4行代碼是雙擊數據透視表「數據區域」中的單元格生成拆分工作表時所錄製的VBA代碼,這是我們手動操作生成的,如果用VBA自動拆分工作表的話,那麼顯然需要我們使用VBA中的循環處理語句自動完成這個工作。

Range("B4").Select

Selection.ShowDetail = True

由上圖可以看出,數據區域從B4單元格開始,我們只要從B4單元格開始,對下面的每一個單元格調用Selection.ShowDetail = True即可,直到遇到空白單元格為止。根據這個思路,這部分代碼修改如下:

Dim myCell As Range

Set myCell = pivotSht.Range("B4")

Do Until myCell.Value = ""

myCell.ShowDetail = True

ActiveSheet.Name = myCell.Offset(0, -1).Value

Set myCell = myCell.Offset(1, 0)

Loop

下面是錄製宏修改後的完整代碼。

下面是錄製宏修改後的完整代碼。

效果圖

本節我們介紹了用VBA把工作表按照某種類別拆分成獨立的工作表,以錄製宏為解決方案的起點,充分調用Excel的內置功能,並對所錄製的宏進行簡單修改以實現我們想要的目標。

注釋:

在代碼段的後面+ 「空格」 +「_」 + 「Enter」為換行符

換行符_

以上為換行符,在本節代碼的多處頻繁使用,請予以注意。

相關焦點

  • 工作表拆分,VBA用了30行,Python只有8行
    工作中,很多小夥伴都會遇到一些需求,將一份Excel文檔按照部門進行拆分,每個部門是一個單獨的工作表。讀者需要注意的是,多個工作表的拆分,始終在一個工作簿內操作。讓我們一起通過Python來實現。本例目標:根據指定的Excel文件按照部門拆分成多個工作表。最終效果:按照部門生成工作表。技術點:groupby()方法的使用,Excel的追加模式等。
  • Excel 工作表如何拆分,教你這樣做,分分搞定
    Excel工作表拆分,如果方法掌握不得當,真的十分麻煩。其實有很多辦法實現,這裡運用vba代碼處理,一鍵式操作,方便快捷。拆分表操作左側為操作區域,所有操作都在這裡進行。1、列表框裡面列出要以哪一列作為拆分條件,比如:本例以「部門」為拆分列,拆分後的表以各「部門」保存工作表。
  • Excel中按照條件拆分工作表,數據透視表就能實現
    有時候我們在excel中將所有數據放在同一張工作表,但由於工作需要又不得不將他們拆分到不同的工作表中,如果數量較少的時候可以使用函數公式或者篩選的辦法,但是數據量較大又不會vba怎麼辦?今天小編分享一個極其簡單的辦法:案例1:按照班級拆分,數據量較少可以使用vlookup函數第一步:添加輔助列在A2中輸入公式=B2&COUNTIF($B$2:B2,B2),就是統計班級出現的次數第二步:提取不重複值即班級需要準備將所有班級名稱提取出來,放在不同的工作表中,做好表頭第三步:按住shift鍵選定所有工作表,在中輸入公式=IFERROR
  • 運用Excel-vba合併工作表數據
    如下圖,工作簿中共有以下幾個工作表,現希望將各張工作表中的數據合併在一起。1.打開vba編輯器:右鍵單擊任意工作表,選擇「查看代碼」。Next '如遇錯誤繼續運行Application.ScreenUpdating = False '關閉屏幕刷新Application.DisplayAlerts = False '禁用警告提示Worksheets("匯總").Delete '刪除原匯總表Set ws = Worksheets.Add(before:=Sheets(1)) '新建工作表
  • Excel拆分工作表,工作表拆分到工作簿,想怎麼拆就怎麼拆!
    工作中,我們經常遇到這樣的問題,比如:如何將一個工作表按類別快速拆分成多個工作表?如何將一個工作簿的多個工作表快速拆分另存為多個工作簿?下面就用案例來說明如何解決這兩個問題。第1個問題:有關工作表快速拆分的問題。案例:將員工花名冊按部門拆分成多個工作表。
  • Excel小技巧:使用VBA,10秒鐘搞定拆分工作表(內附代碼)
    前面我們發布過將多個工作簿中的工作表合併到一個工作表簿中,就有網友提了一個問題,如何講一個工作表拆分成多個工作表,其實實現的方法很多,如果數據少的話,我們直接採用篩選後複製粘貼就可以了,如果數據比較多,或者是日常工作的話,每天這樣複製粘貼,就很麻煩~,或者我們使用透視表也可以。。
  • Excel VBA 批量匯總多個工作表,您只需要在一瞬間完成
    今天主要和大家介紹的是,我們如何在Excel中使用vba代碼來完成多個工作表的匯總工作。在某些時候,我們經常需要處理如下圖的工作表數據匯總工作,將其他月份的數據統一匯總到同一個工作表中。大多數人都是用手動粘貼複製來完成這個重複性的工作,那麼在你學習了本篇,你就會用更高的效率去完成這個事情了。
  • 快速將Excel匯總數據拆分到各工作表,包含VBA方法喲
    ——莊子今天給大家分享個把匯總數據表拆分到各個不同的工作表中的操作方法。先看原始數據表:我們需要按每個【城市】新建一個工作表,並把該城市對應的數據內容,拆分到工作表中。怎麼做呢?今天給大家分享的是使用Excel的【數據透視表】來實現,【數據透視表】用過的人應該都知道數據透視表真的非常非常好用,建議大家都好好學習下。
  • Python和VBA巔峰對決-工作表的合併
    工作中,很多小夥伴都會遇到一些需求,將一份Excel文檔按照每個部門整理的工作表匯總為一份總的工作表。每個工作表格式都一樣,但是數量很多。傳統的方法就是手工打開文件,拷貝黏貼。費力耗時。Python提供了豐富的第三方庫,能夠靈活的的解決你在職場中遇到的問題,極大的解放了我們的雙手,留出大量的空餘時間去學習或者生活。
  • Excel工作表拆分你喜歡哪一種?
    各位小夥伴有沒有遇到過這樣的問題:當我們把所有的信息匯總在一張表裡後,又需要將這張大表按某一條件再拆分成多個工作表。那怎麼才能實現呢?可能最笨的方法就是在原工作表篩選數據然後複製粘貼到新工作表,不過這種方法不適合數據多的案例,並且新工作表也需要一一重命名,顯得繁瑣。今天就給大家介紹兩種快捷實用的工作表拆分方法。
  • excel拆分合併技巧:將總表拆分成工作表的方法
    在平時的工作中,我們經常會遇到將工作表拆分,或者合併的問題。大多數人還只會用複製粘貼的方式來解決,雖然操作簡單,但是當遇到數據量較大的情況,無疑會拖垮我們的工作效率。其實工作表的拆分和合併沒有大家想像中的那麼難,本系列將分為上下兩篇教程,分別講解工作表拆分與合併的方法,本篇是上篇,將給大家帶來4種工作表拆分的方法,趕緊來看看吧!
  • Excel中如何快速拆分工作表?
    Excel中的透視表,除了能快速準確做匯總分析外,其實還有一個非常強大的功能-快速拆分工作表,很多人可能還沒用過。實際工作中雖然也用得不多,但是掌握這個技巧也未嘗不可。具體如何操作,請參考以下步驟。1. 先選中所有數據,創建透視表。
  • 一鍵批量拆分Excel工作表「模板下載」
    因此我們今天特意製作這篇一鍵拆分工作表,生成若干新表或者工作簿的方法分享給大家。今天的分享給大家展示在日常工作中VBA是如何成百上千倍地幫忙提高我們的工作效率的!我們希望將信息總表每一行的匯總信息按照基本信息表中給定的格式拆分為不同的工作表/工作簿。如果不藉助VBA,常規的做法一般是不斷的在兩個工作表或者工作簿之間來回複製粘貼。
  • Excel表格把數據按類別快速拆分到不同工作表或工作簿
    Excel表格複製多個工作簿的數據到一個工作表有時並不是所有的數據都能共享,這時就需要把數據按類別拆分到不同的工作表或者工作簿裡至此,數據按類別拆分到不同的工作表已經完成,接下來講解的內容為將剛剛得到的數據拆分到不同的工作簿裡。
  • 一個公式搞定數據信息按類別拆分到不同工作表
    在Excel表格中說起數據信息按類別拆分,很多朋友都會想到利用數據透視表顯示報表篩選頁的功能或者使用VBA代碼。這篇文章為朋友們分享一種使用函數實現數據拆分的方法。一.實例要求:把下圖所示的名稱為「信息表」的工作表中的內容按班級拆分到不同的工作表裡。
  • excel VBA是什麼?VBA編程入門教程
    本篇將介紹excel vba是什麼?vba編程入門教程,有興趣的朋友可以了解一下!一、excel vba是什麼?VBA的英文全稱是Visual Basic for Applications,是一門標準的宏語言。VBA語言不能單獨運行,只能被office軟體(如:Word、Excel等)所調用。
  • Excel中多個工作表拆分生成單個文件,同事1分鐘搞定了
    在Excel文件中有多個工作表,如何把裡面的每個工作表拆分 出來生成單獨的文件保存起來呢?上圖中有12個工作表,手動複製-粘貼,十幾分鐘也能完成。如果更多呢工作表呢?具體操作步驟:1、點擊【開發工具】選項卡中的【VisualBasic】按鈕,或按Alt+F11鍵,調出VBA代碼窗口;2、在VBA窗口中,點擊左側列表中的【ThisWorkbook】,然後輸入代碼:代碼如下:Sub 拆分工作表
  • 如何快速拆分excel工作表?用數據透視表即可快速搞定
    Hello.大家好,今天跟大家分享下我們如何將1個工作表,按照某1個欄位拆分為多個工作表,工作中我們也會遇到類似的問題,就是將匯總表按照某個類別拆分為多個工作表,大部分都是一個一個的粘貼複製非常的麻煩,今天就跟大家如何利用數據透視快速的完成表格拆分如下圖我們想要以業務員為類別,將每個業務員的銷售明細單獨放在對應的工作表中
  • Microsoft Excel怎麼按條件快速將總表數據拆分成多個工作表?
    在使用Microsoft Excel統計數據時,一般情況下會將各類數據匯總到一個工作表中。當需要分類數據時,使用【篩選】功能的話重複性操作太多,還需要將篩選後的數據進行複製粘貼,有什麼辦法能夠按條件快速的將總表數據拆分成多個工作表?這個時候就需要用到強大的Visual Basic for Applications(VBA)了。
  • excel拆分合併技巧:將工作表合併成總表的方法
    在上篇文章中我們給大家介紹了4種拆分工作表的方法,分別是函數、透視表、高級篩選、VBA,不知道小夥伴們學習得咋樣了?今天我們將學習合併工作表的三種方法,趕緊來看看吧!(由於合併工作表的第一種方法函數法,涉及的函數的應用相對複雜,在函數方面比較薄弱的同學,可以先看第二、三種方法,再繼續學習第一種~)*********【前言】在上篇文章中,對於總表拆分為分表的操作一共給大家分享了四種方法,建議同學們一定要勤加練習,才能熟能生巧。既然說了拆分,那麼就沒有道理不說「合併」。