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ụ

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên