HomeTin học Văn phòngExcelCách hợp nhất...

Cách hợp nhất nhiều trang tính Excel bằng VBA Macro


VBA trong Excel là một phần không thể thiếu trong quá trình tự động hóa Excel và không thể làm suy yếu việc sử dụng cũng như lợi ích của VBA. Nếu bạn đang gặp khó khăn trong việc hợp nhất nhiều trang tính và sổ làm việc trong Excel, thì chúng tôi sẵn sàng trợ giúp.


Các macro được đề cập trong hướng dẫn này sẽ giúp bạn đạt được nhiệm vụ dường như không thể vượt qua chỉ trong vài giây (hoặc vài phút, nếu nội dung dữ liệu lớn).

Bằng cách làm theo hướng dẫn này, bạn sẽ tạo macro VBA của riêng mình trong Excel và hợp nhất nhiều trang tính thành một trang tính một cách hiệu quả.


Hợp nhất nhiều trang tính Excel trong cùng một sổ làm việc

Đối với tác vụ này, dữ liệu được lưu trữ trong các trang tính sau:

Tên trang tính được liệt kê ở trên chỉ nhằm mục đích minh họa. Macro VBA này là chung chung và không phụ thuộc vào tên trang tính; bạn có thể tùy chỉnh mã để sử dụng nó với (các) tên trang tính bất kỳ.

Điều kiện tiên quyết để chạy mã

Có một số điều kiện tiên quyết để chạy mã VBA được liệt kê bên dưới.

Đọc thêm  Cách nhập bảng tính Excel vào Google Sheets

Bạn cần lưu trữ mã macro trong một tệp Excel mới. Lưu sổ làm việc này với một .xlsm sự mở rộng. Bạn có thể lưu sổ làm việc macro VBA với bất kỳ tên nào.

Mở một tệp Excel mới; nhấn Tổ hợp phím + F11 trên bàn phím của bạn để mở trình soạn thảo Excel VBA. Khi trình chỉnh sửa mở ra, hãy thêm một mô-đun mã mới bằng cách nhấp vào Chèn tab ở trên cùng. Lựa chọn mô-đun để chèn một mô-đun mới; đây là nơi bạn sẽ nhập mã macro VBA dưới đây.

Giao diện cửa sổ soạn thảo Excel VBA

Các bảng dữ liệu được hợp nhất phải nằm trong một sổ làm việc riêng khác hoàn toàn. Tên của sổ làm việc và trang tính có thể là bất kỳ tên nào bạn chọn.

Ngay khi bạn thực thi mã VBA, macro VBA sẽ duyệt qua từng trang tính có sẵn trong sổ làm việc chính (sổ làm việc dữ liệu) và dán nội dung vào một trang tính mới được thêm vào trong cùng một sổ làm việc.

Dữ liệu hợp nhất sẽ có sẵn trong trang tính có tên Hợp nhất, củng cố.

Chạy mã VBA

Đã đến lúc chạy mã macro mới được lưu. Sao chép-dán mã này vào mô-đun của trình soạn thảo VBA:

 Sub consolidate_shts()

'declare the various variables used within the code and the vba data types

Dim sht As Worksheet, sht1 As Worksheet, lastrow As Integer, lastrow1 As Integer

'disable screen flickering and alert pop-ups during the execution

With Application

.ScreenUpdating = False

.DisplayAlerts = False

End With

'store the name of the primary workbook in the a macro variable. Replace Test.xlsx with the name of your primary workbook

Set wbk1 = Workbooks("Test.xlsx")

'activate the workbook before performing the function(s) on it

wbk1.Activate

'run a vba for loop to check if a sheet Consolidated already exists. If it exists, the for loop will delete it.

For Each sht In wbk1.Sheets

If sht.Name = "Consolidated" Then sht.Delete

Next sht
'Add a new sheet to store the newly consolidated data

Worksheets.Add.Name = "Consolidated"

'Add some headers to each individual column within the consolidated sheet

With Sheets("Consolidated")

.Range("a1").Value = "OrderDate"

.Range("b1").Value = "Region"

.Range("c1").Value = "Rep"

.Range("d1").Value = "Item"

.Range("e1").Value = "Units"

.Range("f1").Value = "UnitCost"

.Range("g1").Value = "Total"

End With

'The newly created sheet consolidated will hold the consolidated data from each individual sheet in the primary workbook

For i = 1 To wbk1.Worksheets.Count

If Sheets(i).Name <> "Consolidated" Then

'Capture the last populated row from the data sheets in the workbook

lastrow = Sheets(i).Range("a1").End(xlDown).Row

'Capture the last populated row in the Consolidated sheet

lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").End(xlUp).Row + 1

'Copy data from source sheet and paste it in the consolidated sheet

Sheets(i).Range("a2:g" & lastrow).Copy Destination:=Sheets("Consolidated").Range("a" & lastrow1)

End If

Next i

'Enable Excel VBA functions for future use

With Application

.ScreenUpdating = True

.DisplayAlerts = True

End With

End Sub

Mã VBA được giải thích

Trước tiên, hãy khai báo tất cả các biến bạn đang sử dụng trong mã và gán chúng với các kiểu dữ liệu VBA chính xác để làm cho mã chạy trơn tru.

Sau khi bạn khai báo các biến, bạn cần thực hiện một số thủ tục cơ bản. Điều này được thực hiện bằng cách vô hiệu hóa nhấp nháy màn hình và chặn các cảnh báo bật lên. Ví dụ: khi bạn xóa một trang tính hiện có bằng mã VBA, một lời nhắc trong Excel sẽ yêu cầu xác nhận trước khi xóa trang tính. Những lời nhắc như thế này bị chặn để tăng tốc độ thực hiện.

Trong bước tiếp theo, bạn cần xác định tên của sổ làm việc chứa tất cả dữ liệu của bạn. Thay thế test.xlsx với tên và phần mở rộng của tên sổ làm việc của bạn. Hãy chắc chắn rằng bạn bao quanh tên với dấu ngoặc kép.

Giao diện soạn thảo VBA

Kích hoạt sổ làm việc chính và xóa bất kỳ trang tính hiện có nào có tên Hợp nhất, củng cố để loại bỏ bất kỳ dữ liệu được lưu trữ trước đó. Mã VBA chuyển đổi qua từng trang tính và ngay khi gặp tên trang tính Hợp nhất, củng cố nó sẽ xóa nó. Điều này được thực hiện bằng cách sử dụng câu lệnh VBA IF, kiểm tra các điều kiện logic và xóa trang tính ngay khi điều kiện được đáp ứng.

Một trang tính mới được thêm vào sổ làm việc chính để lưu trữ dữ liệu hợp nhất. Sau đó, các tiêu đề được chuẩn hóa, định dạng trước được thêm vào trang tính này. Bạn có thể thay đổi giá trị của tiêu đề (tiêu đề cột) bằng cách cập nhật thông tin bên cạnh tham chiếu ô trong dấu ngoặc kép.

Ví dụ: .Range(“a1”) = “Ngày đặt hàng” có thể được thay thế bằng .Range(“a1”) = “Số thứ tự”

Giao diện soạn thảo VBA

Tiếp theo, một vòng lặp VBA FOR chuyển qua từng trang tính, sao chép nội dung của trang tính và dán nội dung vào Hợp nhất, củng cố trang tính trước khi chuyển sang trang tiếp theo trong sổ làm việc. Quá trình này lặp lại cho đến khi tất cả các trang tính được sao chép hết.

Trong quá trình này, tất cả các hàng được tự động tính toán và dán vào trang tính Hợp nhất. Hàng được điền cuối cùng được tính toán tự động trước khi dữ liệu được dán vào. Macro động và có thể điều chỉnh để thay đổi các hàng dữ liệu trong mỗi trang tính.

Liên quan: Các tính năng nâng cao của Microsoft Excel bạn phải biết

Sau khi dữ liệu từ tất cả các trang tính được dán vào trang tính hợp nhất chính, macro sẽ chuyển đến phần cuối cùng của mã. Các chức năng VBA bị tắt ban đầu sẽ được bật lại để sử dụng trong tương lai.

Giao diện soạn thảo VBA

Hợp nhất nhiều trang tính bằng Excel VBA Macro

Excel VBA là một ngôn ngữ lập trình thừa, hoạt động tốt với mọi thành phần của Excel. Mỗi đoạn mã đều cần thiết và điều quan trọng cần nhớ là việc thực thi phụ thuộc vào hệ thống thực thi từng dòng, vì vậy bạn không nên thay đổi thứ tự của các dòng mã.

Để tùy chỉnh mã cho các yêu cầu của mình, bạn có thể thực hiện các thay đổi cần thiết và chạy mã này để hợp nhất dữ liệu một cách hiệu quả và hiệu quả trong vài giây.



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status