Mình không biết viết code nên không hỗ trợ dc bạn nhiều, chỉ có thể đưa bạn cái code này mình tìm dc trên mạng, có thể sau này dùng. Thường thì mình dùng sub này sau đó filter file tổng hợp để xóa những gì cần xóa.
1. Mở tất cả các file cần gộp khi chạy sub này(không mở những file không cần gộp)
2. File kết quả sẽ được tạo mới.
3. Sau khi có kết quả, cần xóa những dòng tiêu đề vì khi copy, Sub sẽ cop toàn bộ những dòng có data trong file.
Sub MergeMultipleSheetsToNew()
On Error GoTo eh
Dim wbDestination As Workbook
Dim wbSource As Workbook
Dim wsDestination As Worksheet
Dim wb As Workbook
Dim sh As Worksheet
Dim strSheetName As String
Dim strDestName As String
Dim iRws As Integer
Dim iCols As Integer
Dim totRws As Integer
Dim strEndRng As String
Dim rngSource As Range
Application.ScreenUpdating = False
Set wbDestination = Workbooks.Add
strDestName = wbDestination.Name
For Each wb In Application.Workbooks
If wb.Name <> strDestName And wb.Name <> "PERSONAL.XLSB" Then
Set wbSource = wb
For Each sh In wbSource.Worksheets
sh.Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
iRws = ActiveCell.Row
iCols = ActiveCell.Column
strEndRng = sh.Cells(iRws, iCols).Address
Set rngSource = sh.Range("A1:" & strEndRng)
wbDestination.Activate
Set wsDestination = ActiveSheet
wsDestination.Cells.SpecialCells(xlCellTypeLastCell).Select
totRws = ActiveCell.Row
If totRws + rngSource.Rows.Count > wsDestination.Rows.Count Then
MsgBox "There are not enough rows to place the data in the Consolidation worksheet."
GoTo eh
End If
If totRws <> 1 Then totRws = totRws + 1
rngSource.Copy Destination:=wsDestination.Range("A" & totRws)
Next sh
End If
Next wb
For Each wb In Application.Workbooks
If wb.Name <> strDestName And wb.Name <> "PERSONAL.XLSB" Then
wb.Close False
End If
Next wb
Set wbDestination = Nothing
Set wbSource = Nothing
Set wsDestination = Nothing
Set rngSource = Nothing
Set wb = Nothing
Application.ScreenUpdating = False
Exit Sub
eh:
MsgBox Err.Description
End Sub
Mình cũng hỗ trợ bạn dc nếu bạn cho mình file cụ thể vì mình làm thủ công lắm, ko chuyên nghiệp. Thường mình cũng viết sub filter+copy nối đuôi cho nhiều file do công việc hay tổng hợp data từ Oracle nhưng file phải có tên cụ thể hoặc cú pháp tên cụ thể. Kiểu dạng sub nó sẽ tuần tự như này này:bỏ filter trên file tổng( nếu có)->clear data trên file tổng->mở file data 1+copy data(đoạn này mình để số dòng nhiều)->paste vào file tổng->đóng file data 1->di chuyển chuột xuống dòng cuối cùng chưa dữ liệu+xuống 1 ô nữa->mở file+copy file->paste vào file tổng->đóng file data 2....kiểu kiểu vậy.