Sự cố macro Excel: Kết hợp dữ liệu vào tài liệu chính

Sự cố macro Excel: Kết hợp dữ liệu vào tài liệu chính

Này mọi người,

Tôi đang cố gắng tạo một macro trong Excel để kéo tất cả dữ liệu từ nhiều trang tính vào một tài liệu chính. Tất cả các tờ đều có cùng danh mục ở trên cùng. Tôi cần nó để kéo dữ liệu bên dưới và dừng lại khi nó đến các trường không có dữ liệu.

Đây là những gì tôi có cho đến nay nhưng nó dường như không hoạt động :(

Kết hợp phụ() Dim J là số nguyên Khi xảy ra lỗi Tiếp tục tiếp theo Trang tính(1).Chọn Worksheets.Add ' thêm một trang tính ở vị trí đầu tiên Sheets(1).Name = "Kết hợp" ' sao chép tiêu đề Trang tính(2).Kích hoạt Phạm vi ("A1"). Toàn bộRow.Select Selection.Copy Đích:=Sheets(1).Range("A1") ' làm việc thông qua các trang tính Đối với J = 2 To Sheets.Count ' từ trang 2 đến trang cuối cùng Sheets(J).Activate ' làm cho trang tính hoạt động Phạm vi("A1").Chọn Selection.CurrentRegion.Select ' chọn tất cả các ô trong trang tính này ' chọn tất cả các dòng ngoại trừ tiêu đề Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select ' sao chép các ô đã chọn trong trang tính mới ở dòng cuối cùng Selection.Copy Đích:=Trang tính(1).Range("A65536").End(xlUp)(2) Kế tiếp Kết thúc phụ




Trả lời:

Xin chào Kyle,

Hãy thử một cái gì đó như:

'==========>>
Tùy chọn rõ ràng

'---------->>
Người kiểm tra phụ công khai()
Dim WB như sổ làm việc
Dim srcSH dưới dạng bảng tính, destSH dưới dạng bảng tính
Dim srcRng dưới dạng phạm vi, đíchRng dưới dạng phạm vi
Dim iRow càng dài, jRow càng dài
Dim bHeaderSao chép dưới dạng Boolean
Const sSheetName As String = " Kết hợp " '<<=== Thay đổi cho phù hợp
Const iFirstDataRow As Long = 2 '<<=== Thay đổi cho phù hợp

Đặt WB = ActiveWorkbook

Khi có lỗi Đi tới XIT
Với ứng dụng
.Cập nhật màn hình = Sai
.EnableEvents = Sai
.DisplayAlerts = Sai
Khi xảy ra lỗi Tiếp tục tiếp theo
ActiveWorkbook.Worksheets(sSheetName).Delete
Khi có lỗi Đi tới XIT
.DisplayAlerts = Đúng
Kết thúc bằng

Đặt destSH = WB.Worksheets.Add(Before:=WB.Sheets(1))
destSH.Name = sSheetName

Đối với mỗi srcSH trong WB.Worksheets
Nếu srcSH.Name <> destSH.Name Thì
Với srcSH
Nếu không phải bHeaderSao chép thì
.Rows(1).Copy Đích:=destSH.Range("A1")
bHeaderCopied = Đúng
Kết thúc nếu
iRow = LastRow(destSH)
jRow = LastRow(srcSH)
Nếu jRow >= iFirstDataRow thì
Đặt srcRng = .Rows(2).Resize(jRow - iFirstDataRow + 1)
Kết thúc nếu
Kết thúc bằng
Đặt destRng = destSH.Range("A" & iRow + 1)
srcRng.Copy
Với đíchRng
.PasteCác giá trị xlPasteĐặc biệt
.PasteCác định dạng xlPasteĐặc biệt
Application.CutCopyMode = Sai
Kết thúc bằng
Kết thúc nếu
srcSH tiếp theo
Với đíchSH
.UsedRange.EntireColumn.AutoFit
.Cells(1).Chọn
Kết thúc bằng
XIT:
Với ứng dụng
.Cập nhật màn hình = Đúng
.EnableEvents = Đúng
Kết thúc bằng
Kết thúc phụ

'---------->>
Chức năng công cộng LastRow(SH As Worksheet, _
Phạm vi Rng tùy chọn)
Nếu Rng Không Là Gì Thì
Đặt Rng = SH.Cells
Kết thúc nếu

Khi xảy ra lỗi Tiếp tục tiếp theo
LastRow = Rng.Find(Cái gì:="*", _
sau:=Rng.Cells(1), _
Nhìn:=xlPart, _
LookIn:=xlCông thức, _
SearchOrder:=xlByRows, _
Hướng tìm kiếm:=xlTrước đó, _
MatchCase:=False).Row
Khi có lỗi Chuyển tới 0
Chức năng kết thúc
'<<==========

===

Trân trọng,

người Norman

Comments

Popular posts from this blog

Macro Đã bật Excel bị hỏng khi sử dụng Excel> Chia sẻ> Email> Gửi dưới dạng tệp đính kèm

Microsoft excel - Tạo công thức trong đó dữ liệu từ các tab / Bảng tính khác nhau có thể được đồng bộ hóa dựa trên một ô trên bảng tính

Làm mới danh sách SharePoint đã xuất không thành công trong Excel 2013 khi hoạt động với Excel 2010