Limhachung
Thành viên mới
- Tham gia
- 29/5/20
- Bài viết
- 41
- Được thích
- 6
Thu code này coiCác bạn ơi, bình thường mình làm là sẽ gộp được hết tất cả các sheet này vào 1 sheet sau khi chạy VBA nhưng lần này mình copy VBA và chạy lại chỉ chạy được có 3 sheet đầu. Các bạn giúp mình với! File mình đính kèm bên dưới nhé các bạn!
Sub Combine()
Dim Ws As Worksheet, iR&, iR1&
Sheets("Combined").Range("B10:AF10000").ClearContents
For Each Ws In Worksheets
iR = Sheets("Combined").Range("B" & Rows.Count).End(3).Row + 1
If Ws.Name <> "Combined" Then
iR1 = Ws.Range("C" & Rows.Count).End(3).Row - 1
iR1 = Ws.Range("C" & iR1).End(3).Row
Ws.Range("B10:B" & iR1).Resize(, 31).Copy Sheets("Combined").Range("B" & iR)
End If
Next
End Sub
Hỏi chị tí, sau khi copy qua rồi, dữ liệu sau khi copy mình có còn dùng thêm việc gì nữa hay không?Các bạn ơi, bình thường mình làm là sẽ gộp được hết tất cả các sheet này vào 1 sheet sau khi chạy VBA nhưng lần này mình copy VBA và chạy lại chỉ chạy được có 3 sheet đầu. Các bạn giúp mình với! File mình đính kèm bên dưới nhé các bạn!
E tổng hợp lên để tính thu nhập trung bình năm anh ạHỏi chị tí, sau khi copy qua rồi, dữ liệu sau khi copy mình có còn dùng thêm việc gì nữa hay không?
Cảm ơn bạn, để mình thử xem saoThu code này coi
Mã:Sub Combine() Dim Ws As Worksheet, iR&, iR1& Sheets("Combined").Range("B10:AF10000").ClearContents For Each Ws In Worksheets iR = Sheets("Combined").Range("B" & Rows.Count).End(3).Row + 1 If Ws.Name <> "Combined" Then iR1 = Ws.Range("C" & Rows.Count).End(3).Row - 1 iR1 = Ws.Range("C" & iR1).End(3).Row Ws.Range("B10:B" & iR1).Resize(, 31).Copy Sheets("Combined").Range("B" & iR) End If Next End Sub
Mình không chạy được bạn ạ nó cứ báo lỗiThu code này coi
Mã:Sub Combine() Dim Ws As Worksheet, iR&, iR1& Sheets("Combined").Range("B10:AF10000").ClearContents For Each Ws In Worksheets iR = Sheets("Combined").Range("B" & Rows.Count).End(3).Row + 1 If Ws.Name <> "Combined" Then iR1 = Ws.Range("C" & Rows.Count).End(3).Row - 1 iR1 = Ws.Range("C" & iR1).End(3).Row Ws.Range("B10:B" & iR1).Resize(, 31).Copy Sheets("Combined").Range("B" & iR) End If Next End Sub
Chạy code . . .Các bạn ơi, bình thường mình làm là sẽ gộp được hết tất cả các sheet này vào 1 sheet sau khi chạy VBA nhưng lần này mình copy VBA và chạy lại chỉ chạy được có 3 sheet đầu. Các bạn giúp mình với! File mình đính kèm bên dưới nhé các bạn!
Sub ABC()
Dim Ws As Worksheet, eR&, eRow&
Application.ScreenUpdating = False
Sheets("Combined").UsedRange.Clear
For Each Ws In Worksheets
If Ws.Name <> "Combined" Then
eR = Sheets("Combined").Range("B" & Rows.Count).End(xlUp).Row
If eR > 1 Then eR = eR + 2
eRow = Ws.Range("H" & Rows.Count).End(xlUp).Row
Ws.Range("A2:AF" & eRow).Copy Sheets("Combined").Range("A" & eR)
End If
Next
Application.ScreenUpdating = True
End Sub
Mình chạy mà báo lỗi như này là làm sao bạn ơi? Bạn giúp mình gộp vớiChạy code . . .
Mã:Sub ABC() Dim Ws As Worksheet, eR&, eRow& Application.ScreenUpdating = False Sheets("Combined").UsedRange.Clear For Each Ws In Worksheets If Ws.Name <> "Combined" Then eR = Sheets("Combined").Range("B" & Rows.Count).End(xlUp).Row If eR > 1 Then eR = eR + 2 eRow = Ws.Range("H" & Rows.Count).End(xlUp).Row Ws.Range("A2:AF" & eRow).Copy Sheets("Combined").Range("A" & eR) End If Next Application.ScreenUpdating = True End Sub
Mình chạy code của bài trên đâu có vấn đề gì đâu nhỉMình chạy mà báo lỗi như này là làm sao bạn ơi? Bạn giúp mình gộp với
Đảm bảo hết lỗiMình chạy mà báo lỗi như này là làm sao bạn ơi? Bạn giúp mình gộp với
Sub ABC()
Dim Ws As Worksheet, eR&, eRow&
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Combined").UsedRange.Clear
For Each Ws In Worksheets
If Ws.Name <> "Combined" Then
eR = Sheets("Combined").Range("B" & Rows.Count).End(xlUp).Row
If eR > 1 Then eR = eR + 2
eRow = Ws.Range("H" & Rows.Count).End(xlUp).Row
Ws.Range("A2:AF" & eRow).Copy Sheets("Combined").Range("A" & eR)
End If
Next
Application.ScreenUpdating = True
End Sub
Bạn nhắc tới cái tên "Combined" những 4 lần. Theo nguyên tắc "magic numbers" thì điều này nên tránh.Đảm bảo hết lỗi
Mã:Sub ABC() Dim Ws As Worksheet, eR&, eRow& On Error Resume Next Application.ScreenUpdating = False Sheets("Combined").UsedRange.Clear For Each Ws In Worksheets If Ws.Name <> "Combined" Then eR = Sheets("Combined").Range("B" & Rows.Count).End(xlUp).Rowachs thứ hai If eR > 1 Then eR = eR + 2 eRow = Ws.Range("H" & Rows.Count).End(xlUp).Row Ws.Range("A2:AF" & eRow).Copy Sheets("Combined").Range("A" & eR) End If Next Application.ScreenUpdating = True End Sub