Macro để di chuyển hoặc sao chép dữ liệu giữa các sổ làm việc Excel
Bài viết này sẽ hướng dẫn bạn cách sao chép hoặc chuyển dữ liệu giữa các bảng tính trong Microsoft Excel bằng VBA. Trong ví dụ cụ thể này, chúng tôi cũng sẽ hướng dẫn bạn cách kết hợp dữ liệu bằng cách sử dụng truy vấn chắp thêm. Sự kết hợp các tác vụ này sẽ cho phép bạn kết hợp dữ liệu trong các bảng tính hiện có để phân tích dễ dàng hơn.
Macro để di chuyển hoặc sao chép dữ liệu trong Excel
Hãy lấy một trường hợp trong đó bạn cần sao chép dữ liệu từ một sổ làm việc và sau đó sửa đổi nội dung sang một sổ làm việc khác. Trong ví dụ này, sổ làm việc một (sổ làm việc nguồn) có 1 2 3 4 5 và sổ làm việc hai có 6 7 8 9 0 .Sau khi chạy macro, sổ làm việc hai nên có 6 7 8 9 0 1 2 3 4 5 . Các định dạng của cả hai sách bài tập là như nhau.
Đây là một macro có thể chuyển và chắp thêm dữ liệu của bạn. (Đảm bảo rằng bạn đọc LƯU Ý trong mã):
Bản sao phụ ()Dim sBook_t dưới dạng chuỗi
Dim sBook_s dưới dạng chuỗi
Dim sSheet_t dưới dạng chuỗi
Dim sSheet_s dưới dạng chuỗi
Dim lMaxRows_t Như dài
Dim lMaxRows_s Như dài
Dim sMaxCol_s dưới dạng chuỗi
Dim sRange_t dưới dạng chuỗi
Dim sRange_s dưới dạng chuỗi
sBook_t = "Dữ liệu đích WB- Sao chép dữ liệu sang WB.xls"
sBook_s = "Nguồn dữ liệu WB - Sao chép dữ liệu vào WB.xls"
sSheet_t = "WB mục tiêu"
sSheet_s = "Nguồn"
lMaxRows_t = Workbook (sBook_t) .Sheets (sSheet_t) .Cells (Rows.Count, "A"). End (xlUp) .Row
lMaxRows_s = Workbooks (sBook_s) .Sheets (sSheet_s) .Cells (Rows.Count, "A"). End (xlUp) .Row
sMaxCol_s = Workbooks (sBook_s) .Sheets (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Địa chỉ
sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)
Nếu (lMaxRows_t = 1) Sau đó
sRange_t = "A1:" & sMaxCol_s & lMaxRows_s
sRange_s = "A1:" & sMaxCol_s & lMaxRows_s
Workbook (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Workbook (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value
Khác
sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)
sRange_s = "A2:" & sMaxCol_s & lMaxRows_s
Sổ làm việc (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Workbook (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value
' ###################### CHÚ THÍCH #################
'các dòng sau sẽ được sử dụng cho số sê-ri cũng được sửa, thay vì được sao chép
'nếu không có nhu cầu, sau đó xóa dòng bên dưới
Workbooks (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t) .AutoFill Destination: = Workbooks (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t & - 1)), Loại: = xlFillSeries
Kết thúc nếu
Kết thúc phụ