/ / Cách hợp nhất nhiều sổ làm việc Excel bằng VBA

Cách hợp nhất nhiều sổ làm việc Excel bằng VBA

Khi làm việc với nhiều nguồn dữ liệu khác nhau, bạn thường có thể gặp khó khăn khi biên dịch nhiều sổ làm việc và trang tính trước khi đến một phần dữ liệu cuối cùng. Hãy tưởng tượng một tình huống mà bạn có vài trăm sách bài tập để kết hợp trước khi bạn có thể bắt đầu một ngày của mình.

Không ai muốn dành hàng giờ liên tục để làm việc trên các nguồn khác nhau, mở từng sổ làm việc, sao chép và dán dữ liệu từ các trang tính khác nhau, trước khi tạo một sổ làm việc hợp nhất. Điều gì sẽ xảy ra nếu một macro VBA có thể làm điều này cho bạn?

Với hướng dẫn này, bạn có thể tạo mã macro VBA trong Excel của riêng mình để hợp nhất nhiều sổ làm việc, tất cả chỉ trong vài phút (nếu tệp dữ liệu là nhiều).

Điều kiện tiên quyết để tạo mã Macro VBA của riêng bạn

Bạn cần một sổ làm việc để chứa mã VBA, trong khi phần còn lại của các sổ làm việc dữ liệu nguồn là riêng biệt. Ngoài ra, hãy tạo một sổ làm việc Hợp nhất, củng cố để lưu trữ dữ liệu tổng hợp từ tất cả các sổ làm việc của bạn.

Tạo một thư mục Hợp nhất tại vị trí ưa thích của bạn để lưu trữ tất cả các sổ làm việc nguồn của bạn. Khi macro chạy, nó sẽ chuyển qua từng sổ làm việc được lưu trữ trong thư mục này, sao chép nội dung từ các trang tính khác nhau và đặt nó vào sổ làm việc Hợp nhất.

Tạo mã VBA Excel của riêng bạn

Khi các điều kiện tiên quyết không còn nữa, đã đến lúc nghiên cứu kỹ mã và bắt đầu hack những điều cơ bản để điều chỉnh nó cho phù hợp với yêu cầu của bạn.

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

Nhấn vào Alt + F11 trên Excel để mở trình soạn thảo mã macro VBA. Dán mã được viết bên dưới và lưu tệp dưới dạng sổ làm việc hỗ trợ Macro (.xlsm sự mở rộng).

Sub openfiles()

'declare the variables used within the VBA code

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

'disable these functions to enhance code processing

With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

'change the path of the folder where your files are going to be saved

MyFolder = InputBox("Enter path of the Consolidation folder") & ""

'define the reference of the folder in a macro variable

MyFile = Dir(MyFolder)

'open a loop to cycle through each individual workbook stored in the folder

Do While Len(MyFile) > 0

'activate the Consolidation workbook

Windows("Consolidation").Activate

'calculate the last populated row

Range("a1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select

'open the first workbook within the Consolidation folder

Workbooks.Open Filename:=MyFolder & MyFile

Windows(MyFile).Activate

'toggle through each sheet within the workbooks to copy the data

Dim ws As Worksheet
For Each ws In Sheets

ws.Activate
ws.AutoFilterMode = False

'ignore the header and copy the data from row 2
If Cells(2, 1) = "" Then GoTo 1

GoTo 10

1: Next

10: Range("a2:az20000").Copy

Windows("Consolidation").Activate

'paste the copied contents

ActiveSheet.Paste

Windows(MyFile).Activate

'close the open workbook once the data is pasted

ActiveWorkbook.Close

'empty the cache to store the value of the next workbook

MyFile = Dir()

'open the next file in the folder

Loop

'enable the disabled functions for future use

With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With

End Sub

Giải thích mã VBA

Phần đầu tiên của mã là xác định một chương trình con, chương trình này chứa tất cả mã VBA của bạn. Xác định chương trình con với phụ, theo sau là tên của mã. Tên phụ có thể là bất cứ thứ gì; lý tưởng nhất là bạn nên giữ một cái tên có liên quan đến mã bạn sắp viết.

Liên quan: Các trang web và blog để tìm hiểu các mẹo và thủ thuật Excel

Excel VBA hiểu các biến do người dùng tạo và các kiểu dữ liệu tương ứng của chúng được khai báo với lờ mờ (kích thước).

Để nâng cao tốc độ xử lý mã của bạn, bạn có thể tắt cập nhật màn hình và tắt tất cả các cảnh báo, vì điều đó làm chậm quá trình thực thi mã.

Người dùng sẽ được nhắc về đường dẫn của thư mục chứa các tệp dữ liệu. Một vòng lặp được tạo để mở từng sổ làm việc được lưu trữ trong thư mục, sao chép dữ liệu từ mỗi trang tính và nối nó vào Hợp nhất sách bài tập.


Đoạn mã VBA trong Excel

Sổ làm việc Hợp nhất được kích hoạt để Excel VBA có thể tính toán hàng được điền cuối cùng. Ô cuối cùng trong trang tính được chọn và hàng cuối cùng được tính trong sổ làm việc bằng cách sử dụng hàm offset. Điều này rất hữu ích, khi macro bắt đầu thêm dữ liệu từ các tệp nguồn.

Khi vòng lặp mở tệp nguồn đầu tiên, các bộ lọc sẽ bị xóa khỏi mọi trang tính (nếu chúng tồn tại) và dữ liệu từ A2 đến AZ20000 sẽ được sao chép và dán vào sổ làm việc Hợp nhất.

Quá trình này được lặp lại cho đến khi tất cả các trang tính của sổ làm việc được nối vào trong sổ làm việc chính.

Liên quan: Các khóa học trực tuyến tốt nhất để thành thạo Excel nâng cao

Cuối cùng, tệp nguồn được đóng khi tất cả dữ liệu được dán. Sổ làm việc tiếp theo được mở để macro VBA có thể lặp lại các bước tương tự cho tập hợp tệp tiếp theo.


Đoạn mã VBA trong Excel

Vòng lặp được mã hóa để chạy cho đến khi tất cả các tệp được cập nhật tự động trong sổ làm việc chính.

Tùy chỉnh dựa trên người dùng

Đôi khi, bạn không muốn lo lắng về các lời nhắc có sẵn, đặc biệt, nếu bạn là người dùng cuối. Nếu bạn muốn mã hóa đường dẫn của thư mục Hợp nhất trong mã, bạn có thể thay đổi phần này của mã:

MyFolder = InputBox("Enter path of the Consolidation folder") & ""

Đến:

MyFolder = “Folder path” & ""

Ngoài ra, bạn cũng có thể thay đổi các tham chiếu cột, vì bước này không được bao gồm trong mã này. Chỉ cần thay thế tham chiếu cột cuối bằng giá trị cột được điền cuối cùng của bạn (AZ, trong trường hợp này). Bạn cần nhớ rằng hàng được điền cuối cùng được tính thông qua mã macro, vì vậy bạn chỉ cần thay đổi tham chiếu cột.

Để tận dụng tối đa macro này, bạn chỉ có thể sử dụng nó để hợp nhất các sổ làm việc ở cùng một định dạng. Nếu cấu trúc khác nhau, bạn không thể sử dụng macro VBA này.

Hợp nhất nhiều sổ làm việc bằng Excel VBA Macro

Việc tạo và sửa đổi mã VBA trong Excel tương đối dễ dàng, đặc biệt nếu bạn hiểu một số sắc thái trong mã. VBA chạy một cách có hệ thống qua từng dòng mã và thực thi từng dòng một.

Nếu bạn thực hiện bất kỳ thay đổi nào đối với mã, bạn phải đảm bảo rằng bạn không thay đổi thứ tự của các mã, vì điều đó sẽ làm gián đoạn quá trình thực thi của mã.


Người viết mã trên máy tính xách tay
5 Macro Microsoft Excel tuyệt vời để sắp xếp dữ liệu

Giúp việc quản lý dữ liệu trở nên dễ dàng với các macro Excel này.

Đọc tiếp


Giới thiệu về tác giả

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *