如下圖示,有一份【回訪登記表】:
![](http://image.uc.cn/s/wemedia/s/upload/2024/8200dde6723e615dfeb20ec65ac5e176.jpg)
回訪登記表
現在希望按”受訪人員“每人形成一張表格,如下圖示:
![](http://image.uc.cn/s/wemedia/s/upload/2024/69aa58612a8a17c28f6a8983bf6c9129.jpg)
回訪記錄表樣式
最簡便的方法是使用Word中的郵件合並功能,將上表的Excel表數據作爲創建郵件合並的數據源。如何創建郵件合並,可以參見我的頭條文章
在這裏我們用VBA宏來解決這類問題。創建一個如下圖示的“登記表”工作表,並在工作表窗口插入一個圓角矩形作爲按鈕,然後根據“登記表”中的信息自動填寫根據“回訪表模板”創建的工作表內容。這類自動生成工作表是一個Excel操作中常見的操作。
![](http://image.uc.cn/s/wemedia/s/upload/2024/f48bb3e8f7cfc1ff5a08deff1906d9a4.jpg)
基本思想是:從如下圖所示的”登記表“中逐行讀取數據,複制【回訪表模板】工作表爲一個新的工作表,並以【受訪人員】姓名命名,然後將“登記表”工作表中的數據填入到此相應的工作表中,這樣每戶信息形成了一張新的工作表。
![](http://image.uc.cn/s/wemedia/s/upload/2024/5b88d2dc620ec5bdf18156a2d18ce06c.jpg)
回訪表模板--工作表
我們可以用VBA宏來實現此操作。下面是用VBA宏來實現的的詳細步驟,包括如何編寫VBA代碼來實現這一操作。
一、 打開Excel並啓用開發者選項
首先,打開含有需要合並工作表的Excel工作簿。如果“開發者”選項卡未顯示,請點擊“文件” > “選項” > “自定義功能區”,在右側勾選“開發者”複選框,然後點擊“確定”。
二、 插入VBA模塊
轉到“開發者”選項卡,點擊“Visual Basic”或者直接按【Alt + F11】組合鍵打開VBA編輯器。然後在VBA項目浏覽器中(通常位于左側),右擊工作簿名,選擇“插入” > “模塊”,創建一個新的模塊,用于編寫VBA代碼。
三、 編寫VBA代碼
在新插入的模塊中,粘貼以下VBA代碼。
Sub myCopyToSheet() Dim ws As Worksheet totalRows = Range("A65536").End(xlUp).Row For k = 3 To totalRows '獲取戶主姓名 mainName = Sheets("登記表").Cells(k, 3).Text Debug.Print mainName '複制模板工作表到新工作表,並以戶主姓名命名 Sheets("回訪表模板").Copy After:=Sheets(Sheets.Count) Set ws = Sheets(Sheets.Count) ws.Name = mainName '複制原表sheet1中相應信息到新添加的工作表中 Loading... = mainName With Sheets("登記表") Range("B2").Value = .Cells(k, 3) '受訪人姓名 Range("D2").Value = .Cells(k, 4) '聯系電話 Range("B3").Value = .Cells(k, 5) '回訪人姓名 Range("D3").Value = FormatDateTime(.Cells(k, 2), vbLongDate) '回訪時間 Range("B4").Value = .Cells(k, 6) '回訪情況記錄 Range("B5").Value = .Cells(k, 7) '備注 End With NextEnd Sub四、運行VBA宏
返回Excel界面,右擊按鈕,在彈出的快捷菜單中選擇“指定宏”,然後在“指定宏”對話框中選擇“myCopyToSheet”宏,單擊確定返回。鼠標單擊按鈕,即可得到用“受訪人員”姓名命名的工作表,表內信息根據“登記表”中的信息填寫。
如果不想要添加按鈕,也可以點擊“開發者”選項卡,點擊“宏”。 在彈出的“宏”對話框中,選擇myCopyToSheet,然後點擊“運行”,即可得到每位受訪者的記錄表,效果如下圖示:
![](http://image.uc.cn/s/wemedia/s/upload/2024/2e3edf0f605ab699bb21520f7e129170.jpg)
形成以“受訪人姓名”命名的系列工作表。
我是,關注我,持續分享更多的Excel知識與操作技巧。