怎麽把一個Excel工作薄按戶拆分多個sheet表?

鑒水魚技能說 2024-05-22 21:54:39

有位網友問到:如何將一個如下圖所示的Excel工作表,按戶拆分成多個sheet表? 如何把一個excel工作薄按一定格式拆分爲多個sheet表,這是一個Excel操作中比較常見的問題。如果原表行數比較少,我們可以直接手工分拆;但當數據量比較大時,可以使用編程的方式來自動實現,這裏我們用Excel內置的VBA來實現自動分拆。

根據題意可見,每張分表都具有相同的結構。我們可以先按此表格結構創建一個模板工作表(這裏命名爲Template),如下圖所示:

基本思想是:從sheet1源表獲得戶主個數及姓名,複制Template表爲一個新的工作表,並以戶主姓名命名,然後逐個讀取sheet1表中的數據填入到此相應的工作表中,這樣每戶信息形成了一張新的工作表,實現了原工作表的分拆。

我們可以用VBA宏來實現此操作。下面是用VBA宏來實現的的詳細步驟,包括如何編寫VBA代碼來實現這一操作。

一、 打開Excel並啓用開發者選項

首先,打開含有需要合並工作表的Excel工作簿。如果“開發者”選項卡未顯示,請點擊“文件” > “選項” > “自定義功能區”,在右側勾選“開發者”複選框,然後點擊“確定”。

二、 插入VBA模塊

轉到“開發者”選項卡,點擊“Visual Basic”或者直接按【Alt + F11】組合鍵打開VBA編輯器。然後在VBA項目浏覽器中(通常位于左側),右擊工作簿名,選擇“插入” > “模塊”,創建一個新的模塊,用于編寫VBA代碼。

三、 編寫VBA代碼

在新插入的模塊中,粘貼以下VBA代碼。

Sub CopyRangeToAnotherSheet(srcShName, destShName, range1, range2) Dim sourceSheet As Worksheet Dim destinationSheet As Worksheet Dim sourceRange As Range Dim destinationRange As Range ' 設置源工作表和目標工作表 Set sourceSheet = ThisWorkbook.Worksheets(srcShName) Set destinationSheet = ThisWorkbook.Worksheets(destShName) ' 設置要複制的源單元格區域和目標單元格區域 ' 假設要複制Sheet1的A1:B10到Sheet2的A1位置 Set sourceRange = sourceSheet.Range(range1) Set destinationRange = destinationSheet.Range(range2) ' 複制並粘貼單元格區域 sourceRange.Copy Destination:=destinationRangeEnd SubSub myCopy() ' 調用CopyRangeToAnotherSheet子程序,逐個複制每戶信息到相應工作表 Dim ws As Worksheet totalRow = Range("A65536").End(xlUp).Row + 1 num = totalRow \ 15 '戶數 For k = 1 To num '獲取戶主姓名 mainName = Sheets("Sheet1").Cells((k - 1) * 15 + 4, 3).Value '複制模板工作表到新工作表,並以戶主姓名命名 Sheets("Template").Copy After:=Sheets(Sheets.Count) Set ws = Sheets(Sheets.Count) ws.Name = mainName '複制原表sheet1中相應信息到新添加的工作表中 Offset = (k - 1) * 15 range1 = "A" & (Offset + 1) & ":E" & (Offset + 11) Call CopyRangeToAnotherSheet("sheet1", mainName, range1, "A1") NextEnd Sub

四、運行VBA宏

返回Excel界面,再次點擊“開發者”選項卡,點擊“宏”。 在彈出的“宏”對話框中,選擇myCopy,然後點擊“運行”,即可實現原工作表的分拆。

最終得到自動分拆後的工作表,如下圖示:

但這裏需要注意的是:原sheet1中每戶信息的結構要保持相同。

我是鑒水魚老師,關注我,持續分享更多的Excel知識和操作技能。

0 阅读:0

鑒水魚技能說

簡介:感謝大家的關注