Cach tìm kiếm dữ liệu khác nhau giữa 2 bảng excel (1 người xem)

Liên hệ QC

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

nguyenphungloi

Thành viên mới
Tham gia
27/10/07
Bài viết
14
Được thích
0
Kính cháo các anh, chị trên diễn đàn. Mình có một rắc rối trong việc tìm số liệu khác nhau giữa 2 bảng Excel, nhưng mình excel còn kém lắm, nhờ mọi nguời giúp đỡ. Số liệu của mình một biểu nhập tay, một biểu xuất từ chương trình ra nên nó nằm không theo trình tự và lẫn lộn. Mình muốn dựa vào một biến (Mã sản phẩm) để tìm kiếm và đối soát dữ liệu giữa chúng có cái nào nằm ngoài bảng mình đang có hay không, nếu dò tìm thủ công (ctrl +F thì mất nhiều thời gian). Rất mong được giúp đỡ! Có file đính kèm.
 

File đính kèm

Kính cháo các anh, chị trên diễn đàn. Mình có một rắc rối trong việc tìm số liệu khác nhau giữa 2 bảng Excel, nhưng mình excel còn kém lắm, nhờ mọi nguời giúp đỡ. Số liệu của mình một biểu nhập tay, một biểu xuất từ chương trình ra nên nó nằm không theo trình tự và lẫn lộn. Mình muốn dựa vào một biến (Mã sản phẩm) để tìm kiếm và đối soát dữ liệu giữa chúng có cái nào nằm ngoài bảng mình đang có hay không, nếu dò tìm thủ công (ctrl +F thì mất nhiều thời gian). Rất mong được giúp đỡ! Có file đính kèm.
Nếu đồng ý Copy sheet từ 2 file vào chung một file và dùng VBA thì xem file này.
Click chuột vào ô <Mã còn thiếu>
2 file nằm riêng thì mình chưa biết...
Híc!
 

File đính kèm

Nếu đồng ý Copy sheet từ 2 file vào chung một file và dùng VBA thì xem file này.
Click chuột vào ô <Mã còn thiếu>
2 file nằm riêng thì mình chưa biết...
Híc!
Bạn sử dụng nhu vậy nhưng để mình đối chiếu lẫn nhau thì làm sao. Bảng này thiếu cái này nhưng bản thân nó vẫn có những cái thừa so với bảng kia nữa? và để áp dụng thì làm thế nào?
 
Bạn sử dụng nhu vậy nhưng để mình đối chiếu lẫn nhau thì làm sao. Bảng này thiếu cái này nhưng bản thân nó vẫn có những cái thừa so với bảng kia nữa? và để áp dụng thì làm thế nào?

Làm thử = ADO như sau:
(Mở file này so sánh file kia và ngược lại)
- Chép code sau vào module của 2 file

Mã:
Sub GetWorksheetData(strSourceFile As String, strSQL As String, TargetCell As Range)
Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer, r As Long
    If TargetCell Is Nothing Then Exit Sub
    Set cn = New ADODB.Connection
    On Error Resume Next
        cn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DriverId=790;ReadOnly=True;" & _
                "DBQ=" & strSourceFile & ";"
    On Error GoTo 0
    If cn Is Nothing Then
        MsgBox "Can't find the file!", vbExclamation, ThisWorkbook.Name
        Exit Sub
    End If

    Set rs = New ADODB.Recordset
    On Error Resume Next
    
    rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
    On Error GoTo 0
    
    If rs Is Nothing Then
        MsgBox "Can't open the file!", vbExclamation, ThisWorkbook.Name
        cn.Close
        Set cn = Nothing
        Exit Sub
    End If

    TargetCell.CopyFromRecordset rs

    If rs.State = adStateOpen Then
        rs.Close
    End If
    
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    
End Sub

- Chép code sau vào module file "NhapTay"

Mã:
Sub LookUpValue()
    Dim MyPath As String, FName As Variant, rng As Range
    MyPath = Application.DefaultFilePath
    FName = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*")

    If FName = False Then
        Exit Sub
    Else
    MyPath = FName
    Application.ScreenUpdating = False
        For Each rng In Range("C2:C" & Range("C60000").End(xlUp).Row)
          If Len(rng) > 0 Then
            With rng
              .Offset(, 3) = ""
              GetWorksheetData MyPath, "SELECT 'Da co' as SP FROM [Sheet1$] where MASP like '" & .Value & "';", .Offset(, 3)
              If Len(rng) > 0 And Len(rng.Offset(, 3)) = 0 Then rng.Offset(, 3) = "Chua co"
            End With
          End If
        Next
    Application.ScreenUpdating = True
    End If
    
End Sub

- Chép code sau vào module file "DuLieuTuChuongTrinh"

Mã:
Sub LookUpValue()
    Dim MyPath As String, FName As Variant, rng As Range
    MyPath = Application.DefaultFilePath
    FName = Application.GetOpenFilename(filefilter:="Excel Files, *.xl*")

    If FName = False Then
        Exit Sub
    Else
    MyPath = FName
    Application.ScreenUpdating = False
        For Each rng In Range("e2:e" & Range("E60000").End(xlUp).Row)
          If Len(rng) > 0 Then
            With rng
              .Offset(, 8) = ""
              GetWorksheetData MyPath, "SELECT 'Da co' as SP FROM [NhapTay$] where MASP like '" & .Value & "';", .Offset(, 8)
              If Len(rng) > 0 And Len(rng.Offset(, 8)) = 0 Then rng.Offset(, 8) = "Chua co"
            End With
          End If
        Next
    Application.ScreenUpdating = True
    End If
    
End Sub

* Với điều kiện phải đổi tên sheet, đặt tên cột lại (Tham khảo ví dụ mẫu), code như sau:

Bạn xem file nhé.
(Lưu ý nhớ giải nén rồi mở file nhé.)
 

File đính kèm

Cảm ơn bạn. Bạn giúp đỡ rất nhiệt tình. Nhưng mình muốn để khi mình muốn thay đối sheet khác thì vẫn làm được chữ? nếu giờ có một sheet mới minh muốn đối soát thì mình cần sửa chữa như thế nào. Bạn có thể giải thích giùm mình cách sửa code de khi thay đổi các biểu khác mình vẫn áp dụng được không? cái nào là quan trọng để quyết định nó chạy đúng theo ý mình? Cảm ơn nhiều.
 

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

Back
Top Bottom