Copy dữ liệu từ file excel "So_lieu.xls" vào file excel "Tong_hop.xls" (2 người xem)

Người dùng đang xem chủ đề này

Hoàng Tuyên

Thành viên mới
Tham gia
10/6/08
Bài viết
39
Được thích
4
Mình muốn copy dữ liệu từ file excel "So_lieu_D01" có 2 sheet "D01" và "_DATA" vào file xcel "Tong_hop" có các sheet "D01", "D02", "D03", "D04", "D05" và "_DATA" với điều kiện:
- Tên sheet nào ở file "So_lieu_D01" thì copy dữ liệu đúng vào tên sheet đó ở file "Tong_hop".
- Dữ liệu đã có ở file "Tong_hop" không xóa mà chỉ bổ sung dữ liệu từ file "So_lieu_D01". Mặt khác, những dữ liệu trong sheet nào của file "So_lieu_D01" mà trùng với dữ liệu của sheet tương ứng trong file "Tong_hop" thì copy đè lên dữ liệu của đúng dòng đó.
Mình gửi file đính kèm nhờ các anh chị GPE giải quyết giúp. Xin cảm ơn các anh chị trước ạ.
 

File đính kèm

Không có bạn nào giúp mình à.
Các bạn GPE tranh thủ giúp mình với.
 
Upvote 0
Chào bạn!
Về vấn đề này bạn có thể tìm hiểu về kĩ thuật sử dụng Add-in A-Tools để trịch lọc dữ liệu bạn nhé. Ở add-in a-tools có kĩ thuật sử dụng DBKEY để kết nối lấy dữ liệu từ nhiều môi trường, nhiều cơ sở chữa dữ liệu khác nhau như Excel, Access, SQL...
Mình nghĩ nó có thể giải quyết được vấn đề của bạn .
 
Upvote 0
Chào bạn!
Về vấn đề này bạn có thể tìm hiểu về kĩ thuật sử dụng Add-in A-Tools để trịch lọc dữ liệu bạn nhé. Ở add-in a-tools có kĩ thuật sử dụng DBKEY để kết nối lấy dữ liệu từ nhiều môi trường, nhiều cơ sở chữa dữ liệu khác nhau như Excel, Access, SQL..
Mình đang cần viết code để chạy trên Form như file mình đính kèm.
 
Upvote 0
Các anh chị GPE giúp mình với.
File gửi đính kèm mình đã tạo form rồi ạ.
 
Upvote 0
Mình muốn copy dữ liệu từ file excel "So_lieu_D01" có 2 sheet "D01" và "_DATA" vào file xcel "Tong_hop" có các sheet "D01", "D02", "D03", "D04", "D05" và "_DATA" với điều kiện:
- Tên sheet nào ở file "So_lieu_D01" thì copy dữ liệu đúng vào tên sheet đó ở file "Tong_hop".
- Dữ liệu đã có ở file "Tong_hop" không xóa mà chỉ bổ sung dữ liệu từ file "So_lieu_D01". Mặt khác, những dữ liệu trong sheet nào của file "So_lieu_D01" mà trùng với dữ liệu của sheet tương ứng trong file "Tong_hop" thì copy đè lên dữ liệu của đúng dòng đó.
Mình gửi file đính kèm nhờ các anh chị GPE giải quyết giúp. Xin cảm ơn các anh chị trước ạ.
Biết lấy cái gì làm chuẩn để xét trùng hay không trùng? Xét hết tất cả các cột của một dòng ?
Không có bạn nào giúp mình à.
Các bạn GPE tranh thủ giúp mình với.
Vì là không rõ ràng nên có "la hoài" cũng như không thôi.
Xem đỡ file này rồi tự chỉnh sửa lại cho phù hợp với ý muốn "bí ẩn" của bạn nhé.
 

File đính kèm

Upvote 0
Biết lấy cái gì làm chuẩn để xét trùng hay không trùng? Xét hết tất cả các cột của một dòng?
Xin lỗi bác Ba Tê vì đã không diễn giải rõ.
Dữ liệu "trùng" ở đây là: (các sheet tại 2 file có tên giống nhau mới lấy dữ liệu)
Khi lấy dữ liệu của hàng nào trong file "So_lieu_D01.xls" (VD: hàng 13) mà trùng với dữ liệu của hàng bất kỳ đã có sẵn trong file "Tong_hop.xls" (VD: hàng 258) thì sẽ chép dữ liệu hàng 13 (file "So_lieu_D01.xls") vào hàng 258 (file "Tong_hop.xls").
Mặt khác, nếu dữ liệu hàng 13 (file "So_lieu_D01.xls") không trùng với dữ liệu hàng nào của file "Tong_hop.xls" thì lấy vào hàng cuối cùng của file "Tong_hop.xls".
 
Upvote 0
Khi lấy dữ liệu của hàng nào trong file "So_lieu_D01.xls" (VD: hàng 13) mà trùng với dữ liệu của hàng bất kỳ đã có sẵn trong file "Tong_hop.xls" (VD: hàng 258) thì sẽ chép dữ liệu hàng 13 (file "So_lieu_D01.xls") vào hàng 258 (file "Tong_hop.xls").

Lạ nhỉ, đã trùng rồi thì chép vô làm gì nữa.
 
Upvote 0
Không kiểu sao trình độ diễn giải của em kém quá (thảo nào các cụ ngày xưa không cho đi làm nghề gõ đầu trẻ).
Cảm ơn các bác đã thắc mắc.
Em diễn giải lại trùng ở đây là trùng các cột A, C, D, E thôi ạ. Các cột khác có thể không trùng (vì theo thời gian có thể hàng đó cần thay đổi nên khi tổng hợp lại thì file "Tong_hop" cũng cần thay đổi theo file "So_lieu_D01" ạ.
 
Upvote 0
Không kiểu sao trình độ diễn giải của em kém quá (thảo nào các cụ ngày xưa không cho đi làm nghề gõ đầu trẻ).
Cảm ơn các bác đã thắc mắc.
Em diễn giải lại trùng ở đây là trùng các cột A, C, D, E thôi ạ. Các cột khác có thể không trùng (vì theo thời gian có thể hàng đó cần thay đổi nên khi tổng hợp lại thì file "Tong_hop" cũng cần thay đổi theo file "So_lieu_D01" ạ.
Vậy là các sheet "D.. "và các sheet "_Data" cũng là xét theo cột A,C,D,E?
Sửa lại code lần cuối, nếu có "khác nữa" thì ráng chịu nghe. Tui chạy rồi đó.
Thay Sub cũ bằng cái này
PHP:
Public Sub TongHop()
Dim TenWb As String, TenWs As String, sArr(), dArr1(1 To 10000, 1 To 9), I As Long, J As Long, K As Long
Dim Dic As Object, Tem As String, DK As Boolean, R As Long, dArr2(1 To 10000, 1 To 5), K2 As Long
Set Dic = CreateObject("Scripting.Dictionary")
TenWb = [F5].Value
TenWs = Mid(TenWb, 9, 3)
DK = KiemTra(TenWb)
If DK = False Then
    MsgBox "Mo file " & TenWb & " truoc khi chay code.", , "Giai Phap Excel.com"
    Exit Sub
Else
    With Sheets(TenWs)
        R = .[A65536].End(xlUp).Row
        If R > 1 Then
            sArr = .Range("A1:I" & R).Value
            For I = 2 To UBound(sArr, 1)
                K = K + 1
                For J = 1 To 9
                        dArr1(K, J) = sArr(I, J)
                    Next J
                Tem = sArr(I, 1) & "#" & sArr(I, 3) & "#" & sArr(I, 4) & "#" & sArr(I, 5)
                If Not Dic.Exists(Tem) Then Dic.Add Tem, K
            Next I
        End If
    End With
    '---------------------------------------------------'
    With Sheets("_Data")
        R = .[B65536].End(xlUp).Row
        If R > 1 Then
            sArr = .Range("A1:E" & R).Value
            For I = 2 To UBound(sArr, 1)
                K2 = K2 + 1
                For J = 1 To 5
                    dArr2(K2, J) = sArr(I, J)
                Next J
                Tem = sArr(I, 1) & "#" & sArr(I, 3) & "#" & sArr(I, 4) & "#" & sArr(I, 5)
                If Not Dic.Exists(Tem) Then Dic.Add Tem, K2
            Next I
        End If
    End With
    '------------------------------------------------'
    With Workbooks(TenWb).Worksheets(TenWs)
        R = .[A65536].End(xlUp).Row
        If R > 1 Then
            sArr = .Range("A1:I" & R).Value
            For I = 2 To UBound(sArr, 1)
                Tem = sArr(I, 1) & "#" & sArr(I, 3) & "#" & sArr(I, 4) & "#" & sArr(I, 5)
                If Not Dic.Exists(Tem) Then
                    K = K + 1
                    Dic.Add Tem, K
                    For J = 1 To 9
                        dArr1(K, J) = sArr(I, J)
                    Next J
                Else
                    For J = 1 To 9
                        dArr1(Dic.Item(Tem), J) = sArr(I, J)
                    Next J
                End If
            Next I
        End If
    End With
    '--------------------------------------------'
    With Workbooks(TenWb).Worksheets("_Data")
        R = .[B65536].End(xlUp).Row
        If R > 1 Then
            sArr = .Range("A1:E" & R).Value
            For I = 2 To UBound(sArr, 1)
                Tem = sArr(I, 1) & "#" & sArr(I, 3) & "#" & sArr(I, 4) & "#" & sArr(I, 5)
                If Not Dic.Exists(Tem) Then
                    K2 = K2 + 1
                    Dic.Add Tem, K2
                    For J = 1 To 5
                        dArr2(K2, J) = sArr(I, J)
                    Next J
                Else
                    For J = 1 To 5
                        dArr2(Dic.Item(Tem), J) = sArr(I, J)
                    Next J
                End If
            Next I
        End If
    End With
    '--------------------------------------------'
    Sheets(TenWs).[A2].Resize(K, 9) = dArr1
    Sheets("_Data").[A2].Resize(K2, 5) = dArr2
End If
MsgBox "XONG", , "Giai Phap Excel.com"
Set Dic = Nothing
End Sub
Cái Function KiemTra() phải giữ nguyên nghe.
---------------------------
Tò tí te.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom