Copy dữ liệu mong muốn 2 sheets vào sheet Tổng hợp. Nhờ các anh, chị giúp em ạ !!

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Manhhung90

Thành viên hoạt động
Tham gia
3/4/20
Bài viết
135
Được thích
8
Mình có 1 file excel muốn copy dữ liệu từ cột A đến cột N của 2 sheet 1 và 2 vào cột A đến cột N của sheet Tong hop. Các ô phía sau của sheet Tong không đụng tới. Do dữ liệu file thực tế nhiều dòng và copy 2 sheet dễ nhầm lẫn nên nhờ mọi người giúp mình đoạn code VBA ạ. Em cảm ơn nhiều!!!!
 

File đính kèm

  • File tong hop.xlsx
    14.1 KB · Đọc: 4
Copy mà bạn nói là copy theo điều kiện gì; hay có gì thì copy tất cả hay sao?
 
Upvote 0
Vậy thì bạn mở bộ thu macro & có thể tự thu những hành động copy của bạn;
Chỉ còn vấn đề sửa các câu lệnh cho có vẻ chuyên nghiệp hơn thì nhờ thôi!
 
Upvote 0
Mình có 1 file excel muốn copy dữ liệu từ cột A đến cột N của 2 sheet 1 và 2 vào cột A đến cột N của sheet Tong hop. Các ô phía sau của sheet Tong không đụng tới. Do dữ liệu file thực tế nhiều dòng và copy 2 sheet dễ nhầm lẫn nên nhờ mọi người giúp mình đoạn code VBA ạ. Em cảm ơn nhiều!!!!
Dùng power query: khi có thay đổi trong sheet1, sheet2, thì vào sheet TONG HOP, chuột phải vào vùng dữ liệu chọn Refresh
 

File đính kèm

  • File tong hop.xlsx
    28.7 KB · Đọc: 10
Upvote 0
Upvote 0
Khả năng cao là vẫn cứ vba mới đúng mong muốn.
Vâng anh,
lại nhờ ông bạn chatGPT vậy:
Mã:
Sub MergeSheetsWithSTTOptimized()
    Dim ws1 As Worksheet, ws2 As Worksheet, wsTONGHOP As Worksheet
    Dim lastRow1 As Long, lastRow2 As Long, lastRowTONGHOP As Long
    Dim data1 As Variant, data2 As Variant, mergedData As Variant
    Dim i As Long, j As Long
    Dim totalRows As Long

    ' Gán các sheet
    Set ws1 = ThisWorkbook.Sheets("1")
    Set ws2 = ThisWorkbook.Sheets("2")
    Set wsTONGHOP = ThisWorkbook.Sheets("TONG HOP")

    ' Ki?m tra s? t?n t?i c?a các sheet
    If ws1 Is Nothing Or ws2 Is Nothing Or wsTONGHOP Is Nothing Then
        MsgBox "M?t trong các sheet '1', '2', ho?c 'TONG HOP' không t?n t?i.", vbExclamation
        Exit Sub
    End If

    ' T?t tính nang t? d?ng tính toán và c?p nh?t màn hình d? tang t?c d? x? lý
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    ' Xóa d? li?u cu trên sheet "TONG HOP"
    wsTONGHOP.Rows("2:" & wsTONGHOP.Rows.Count).ClearContents

    ' Copy tiêu d? t? sheet "1" sang sheet "TONG HOP"
    ws1.Rows(1).Copy Destination:=wsTONGHOP.Rows(1)

    ' Xác d?nh dòng cu?i c?a m?i sheet
    lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
    lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row

    ' Ð?c d? li?u t? các sheet vào m?ng
    If lastRow1 > 1 Then
        data1 = ws1.Range("A2:N" & lastRow1).Value
    End If
    If lastRow2 > 1 Then
        data2 = ws2.Range("A2:N" & lastRow2).Value
    End If

    ' Tính toán s? hàng c?n g?p
    totalRows = IIf(lastRow1 > 1, UBound(data1, 1), 0) + IIf(lastRow2 > 1, UBound(data2, 1), 0)

    ' Ch? th?c hi?n n?u có d? li?u d? g?p
    If totalRows > 0 Then
        ReDim mergedData(1 To totalRows, 1 To 14)

        ' Sao chép d? li?u t? data1 vào mergedData
        For i = 1 To UBound(data1, 1)
            For j = 1 To 14
                mergedData(i, j) = data1(i, j)
            Next j
        Next i

        ' Sao chép d? li?u t? data2 vào mergedData
        For i = 1 To UBound(data2, 1)
            For j = 1 To 14
                mergedData(UBound(data1, 1) + i, j) = data2(i, j)
            Next j
        Next i

        ' Ghi d? li?u t? m?ng mergedData vào sheet "TONG HOP" m?t l?n
        wsTONGHOP.Range("A2:N" & totalRows + 1).Value = mergedData
    End If

    ' Ðánh s? th? t? (STT) ? c?t A c?a sheet "TONG HOP"
    lastRowTONGHOP = wsTONGHOP.Cells(wsTONGHOP.Rows.Count, "B").End(xlUp).Row
    If lastRowTONGHOP > 1 Then
        wsTONGHOP.Range("A2:A" & lastRowTONGHOP).Formula = "=ROW()-1"
    End If

    ' B?t l?i tính nang tính toán t? d?ng và c?p nh?t màn hình
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

    ' Thông báo hoàn t?t
    MsgBox "Da xong !", vbInformation
End Sub
 
Upvote 0
Vâng anh,
lại nhờ ông bạn chatGPT vậy:
Mã:
Sub MergeSheetsWithSTTOptimized()
    Dim ws1 As Worksheet, ws2 As Worksheet, wsTONGHOP As Worksheet
    Dim lastRow1 As Long, lastRow2 As Long, lastRowTONGHOP As Long
    Dim data1 As Variant, data2 As Variant, mergedData As Variant
    Dim i As Long, j As Long
    Dim totalRows As Long

    ' Gán các sheet
    Set ws1 = ThisWorkbook.Sheets("1")
    Set ws2 = ThisWorkbook.Sheets("2")
    Set wsTONGHOP = ThisWorkbook.Sheets("TONG HOP")

    ' Ki?m tra s? t?n t?i c?a các sheet
    If ws1 Is Nothing Or ws2 Is Nothing Or wsTONGHOP Is Nothing Then
        MsgBox "M?t trong các sheet '1', '2', ho?c 'TONG HOP' không t?n t?i.", vbExclamation
        Exit Sub
    End If

    ' T?t tính nang t? d?ng tính toán và c?p nh?t màn hình d? tang t?c d? x? lý
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    ' Xóa d? li?u cu trên sheet "TONG HOP"
    wsTONGHOP.Rows("2:" & wsTONGHOP.Rows.Count).ClearContents

    ' Copy tiêu d? t? sheet "1" sang sheet "TONG HOP"
    ws1.Rows(1).Copy Destination:=wsTONGHOP.Rows(1)

    ' Xác d?nh dòng cu?i c?a m?i sheet
    lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
    lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row

    ' Ð?c d? li?u t? các sheet vào m?ng
    If lastRow1 > 1 Then
        data1 = ws1.Range("A2:N" & lastRow1).Value
    End If
    If lastRow2 > 1 Then
        data2 = ws2.Range("A2:N" & lastRow2).Value
    End If

    ' Tính toán s? hàng c?n g?p
    totalRows = IIf(lastRow1 > 1, UBound(data1, 1), 0) + IIf(lastRow2 > 1, UBound(data2, 1), 0)

    ' Ch? th?c hi?n n?u có d? li?u d? g?p
    If totalRows > 0 Then
        ReDim mergedData(1 To totalRows, 1 To 14)

        ' Sao chép d? li?u t? data1 vào mergedData
        For i = 1 To UBound(data1, 1)
            For j = 1 To 14
                mergedData(i, j) = data1(i, j)
            Next j
        Next i

        ' Sao chép d? li?u t? data2 vào mergedData
        For i = 1 To UBound(data2, 1)
            For j = 1 To 14
                mergedData(UBound(data1, 1) + i, j) = data2(i, j)
            Next j
        Next i

        ' Ghi d? li?u t? m?ng mergedData vào sheet "TONG HOP" m?t l?n
        wsTONGHOP.Range("A2:N" & totalRows + 1).Value = mergedData
    End If

    ' Ðánh s? th? t? (STT) ? c?t A c?a sheet "TONG HOP"
    lastRowTONGHOP = wsTONGHOP.Cells(wsTONGHOP.Rows.Count, "B").End(xlUp).Row
    If lastRowTONGHOP > 1 Then
        wsTONGHOP.Range("A2:A" & lastRowTONGHOP).Formula = "=ROW()-1"
    End If

    ' B?t l?i tính nang tính toán t? d?ng và c?p nh?t màn hình
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

    ' Thông báo hoàn t?t
    MsgBox "Da xong !", vbInformation
End Sub
Cảm ơn bạn nhiều ạ!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom