怎樣把EXCEL裏面的數據自動填寫到表格

鑒水魚技能說 2024-06-24 21:22:38

如下圖示,有一份【回訪登記表】:

回訪登記表

現在希望按”受訪人員“每人形成一張表格,如下圖示:

回訪記錄表樣式

最簡便的方法是使用Word中的郵件合並功能,將上表的Excel表數據作爲創建郵件合並的數據源。如何創建郵件合並,可以參見我的頭條文章

在這裏我們用VBA宏來解決這類問題。創建一個如下圖示的“登記表”工作表,並在工作表窗口插入一個圓角矩形作爲按鈕,然後根據“登記表”中的信息自動填寫根據“回訪表模板”創建的工作表內容。這類自動生成工作表是一個Excel操作中常見的操作。

基本思想是:從如下圖所示的”登記表“中逐行讀取數據,複制【回訪表模板】工作表爲一個新的工作表,並以【受訪人員】姓名命名,然後將“登記表”工作表中的數據填入到此相應的工作表中,這樣每戶信息形成了一張新的工作表。

回訪表模板--工作表

我們可以用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,然後點擊“運行”,即可得到每位受訪者的記錄表,效果如下圖示:

形成以“受訪人姓名”命名的系列工作表。

我是,關注我,持續分享更多的Excel知識與操作技巧。

0 阅读:0

鑒水魚技能說

簡介:感謝大家的關注