Kiểm tra 2 vùng dữ liệu giống nhau

Liên hệ QC

hadoan-pap

Thành viên tiêu biểu
Tham gia
8/7/15
Bài viết
453
Được thích
18
Em chào mọi người.

Em có 1 bài toán kiểm tra 2 vùng dữ lieu giống nhau ạ.... các dòng ở 2 file nó sắp xếp lẫn lộn và em muốn kiểm tra vùng dữ lieu ở 2 file này xem giống nhau hay không ?

Tức là số lượng nó phải đủ và giống nhau ạ

Em xin cảm ơn!
 

File đính kèm

  • 1.xlsm
    11.5 KB · Đọc: 12
  • 2.xlsm
    9 KB · Đọc: 10
Em chào mọi người.

Em có 1 bài toán kiểm tra 2 vùng dữ lieu giống nhau ạ.... các dòng ở 2 file nó sắp xếp lẫn lộn và em muốn kiểm tra vùng dữ lieu ở 2 file này xem giống nhau hay không ?

Tức là số lượng nó phải đủ và giống nhau ạ

Em xin cảm ơn!
Sort trước 2 bảng rồi mới dò, thấy cũng dễ mà
 
Upvote 0
Bạn muốn kiểm tra số lượng rồi đối chiếu qua giá thành xem tổng có đúng không hả? Thế bạn cho hỏi nếu
File 1:
Quantity 100 Price 5000
Quantity 100 Price 4000
File 2 :
Quantity 100 Price 5000
Quantity 100 Price 5000
Vậy kết quả mong muốn là như nào?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn muốn kiểm tra số lượng rồi đối chiếu qua giá thành xem tổng có đúng không hả? Thế bạn cho hỏi nếu
File 1:
Quantity 100 Price 5000
Quantity 100 Price 4000
File 2 :
Quantity 100 Price 5000
Quantity 100 Price 5000
Vậy kết quả mong muốn là như nào?
Tôi nghĩ nếu sau khi sort xong mà so từng hàng nó giống nhau như đúc là được
 
Upvote 0
Có so sánh thức tự ô không, nếu có thì lại là 1 vấn đề khác, câu hỏi của bác có ý này không để mọi người giải quyết.
 
Upvote 0
Dạng này trước bác Ba tê cũng có viết rồi.Bạn thao khảo
Hoặc dùng cách sort như thầy ndu96081631 nói cũng là một cách
 

File đính kèm

  • So_Sanh.xlsm
    20.5 KB · Đọc: 12
Upvote 0
CountIf mới giải quyết được bài này.
Bác làm với CountIf cho em tham khảo với.Thêm trường hợp là ở bảng A có một số là tổng của hai hoặc nhiều số ở bàng B thì có dùng được công thức không Bác? Công thức em mù tịt
 
Upvote 0
Ví dụ với dữ liệu này, hàm Lookup/Match sẽ cho ra sai (tất cả so sánh đều "Y"), trong khi hàm CountIf cho thấy có ít nhất 1 chỗ khác nhau:

View attachment 247957
View attachment 247958
Dạ, Vì e phải đối chiếu rất nhiều file nên không thể dung hàm được ạ.

Em muốn dung code vba để kiểm tra việc này… tức là sau khi sort xong mà 2 vùng dữ lieu giống nhau như đúc như thầy @ndu96081631 nói thì nó sẽ báo true ạ.
Bài đã được tự động gộp:

Thêm nữa thực tế là có rất nhiều file được chia thành 2 folder, e mở lần lượt các file trong folder A để tìm xem file nào trong folder B mà có vùng dữ lieu giống thì sẽ báo kết quả là có tồn tại ạ.

Rất mong mọi người hỗ trợ ạ.

Em xin cảm ơn .

Em xin phép được tag thầy @ndu96081631. Rất mong thầy giúp đỡ ạ
 
Upvote 0
Dạ, Vì e phải đối chiếu rất nhiều file nên không thể dung hàm được ạ.
...
Đẩy các files qua Access nó thanh toán cho.

Than thở ngoài lề:
Chuyện "nhiều file" hay "nhiều dòng" có lẽ là phát-sần của GPE nhỉ. Chả thấy mấy trường hợp bình thường.
Điển hình xã hội VN, cái gì cũng to đùng, khủng khiếp, nhưng riêng hãnh diện dân tộc thì nhỏ rí.
Đáng lẽ GPE nên đổi tên là Giải Pháp cho Excel với dữ liệu khủng.
 
Upvote 0
Dạ, em có làm được đoạn code như bên dưới nhưng có vẻ nó chưa được tối ưu ạ.

With Application
.Interactive = False
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With

Dim lastrow As Long

Dim MyFile As String
MyPath = "C:\Users\Invoice Excel File - invList2\Exits in InvList1 & InvList2\"
MyFile = Dir(MyPath)

Do While MyFile <> ""
If MyFile Like "*.xlsm" Or MyFile Like "*.xls" Or MyFile Like "*.XLSX" Or MyFile Like "*.xlsx" Or MyFile Like "*.Xlsx" Or MyFile Like "*.Xls" Then
Workbooks.Open MyPath & MyFile

Dim arr, arr1, arr2
Dim i, j As Long

arr = ActiveWorkbook.Sheets("Sheet1").Range("I2:J" & ActiveWorkbook.Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row).Value
arr1 = Sheet1.Range("H2:Z" & Sheet1.Range("H" & Rows.Count).End(xlUp).Row).Value
ReDim arr2(1 To UBound(arr1, 1), 1 To 1)
For i = 1 To UBound(arr1, 1)
For j = 1 To UBound(arr, 1)
If arr1(i, 1) <> "" And arr(j, 1) <> "" And arr1(i, 2) <> "" And arr(j, 2) <> "" Then
If UCase(arr1(i, 1)) = UCase(arr(j, 1)) And UCase(arr1(i, 2)) = UCase(arr(j, 2)) Then

MsgBox "ok"
Sheet1.Range("J1") = "same"
Exit For
End If
End If
Next j
Next i
'Sheet1.Range("J2").Resize(UBound(arr1, 1), 1).Value = arr2

ActiveWorkbook.Close True

End If
MyFile = Dir
Loop

With Application
.Interactive = True
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
 
Upvote 0
Dạ, em có làm được đoạn code như bên dưới nhưng có vẻ nó chưa được tối ưu ạ.

With Application
.Interactive = False
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With

Dim lastrow As Long

Dim MyFile As String
MyPath = "C:\Users\Invoice Excel File - invList2\Exits in InvList1 & InvList2\"
MyFile = Dir(MyPath)

Do While MyFile <> ""
If MyFile Like "*.xlsm" Or MyFile Like "*.xls" Or MyFile Like "*.XLSX" Or MyFile Like "*.xlsx" Or MyFile Like "*.Xlsx" Or MyFile Like "*.Xls" Then
Workbooks.Open MyPath & MyFile

Dim arr, arr1, arr2
Dim i, j As Long

arr = ActiveWorkbook.Sheets("Sheet1").Range("I2:J" & ActiveWorkbook.Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row).Value
arr1 = Sheet1.Range("H2:Z" & Sheet1.Range("H" & Rows.Count).End(xlUp).Row).Value
ReDim arr2(1 To UBound(arr1, 1), 1 To 1)
For i = 1 To UBound(arr1, 1)
For j = 1 To UBound(arr, 1)
If arr1(i, 1) <> "" And arr(j, 1) <> "" And arr1(i, 2) <> "" And arr(j, 2) <> "" Then
If UCase(arr1(i, 1)) = UCase(arr(j, 1)) And UCase(arr1(i, 2)) = UCase(arr(j, 2)) Then

MsgBox "ok"
Sheet1.Range("J1") = "same"
Exit For
End If
End If
Next j
Next i
'Sheet1.Range("J2").Resize(UBound(arr1, 1), 1).Value = arr2

ActiveWorkbook.Close True

End If
MyFile = Dir
Loop

With Application
.Interactive = True
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
Bạn thử code này nhé.
Mã:
Sub sosanh()
    Dim mang, arr, i As Long, lr As Long, lr1 As Long, dk As String, dks As String
    With Sheets("sheet1")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         arr = .Range("B2:C" & lr).Value
    End With
    With Sheets("sheet2")
         lr1 = .Range("C" & Rows.Count).End(xlUp).Row
         mang = .Range("c2:D" & lr1).Value
    End With
        If lr <> lr1 Then MsgBox "sai": Exit Sub
        For i = 1 To UBound(arr)
            dk = arr(i, 1) & "#" & arr(i, 2)
            dks = mang(i, 1) & "#" & mang(i, 2)
            If dk <> dks Then
               MsgBox "sai"
               Exit Sub
            End If
        Next i
    MsgBox "dung"
End Sub
 
Upvote 0
Bạn thử code này nhé.
Mã:
Sub sosanh()
    Dim mang, arr, i As Long, lr As Long, lr1 As Long, dk As String, dks As String
    With Sheets("sheet1")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         arr = .Range("B2:C" & lr).Value
    End With
    With Sheets("sheet2")
         lr1 = .Range("C" & Rows.Count).End(xlUp).Row
         mang = .Range("c2:D" & lr1).Value
    End With
        If lr <> lr1 Then MsgBox "sai": Exit Sub
        For i = 1 To UBound(arr)
            dk = arr(i, 1) & "#" & arr(i, 2)
            dks = mang(i, 1) & "#" & mang(i, 2)
            If dk <> dks Then
               MsgBox "sai"
               Exit Sub
            End If
        Next i
    MsgBox "dung"
End Sub
Hi cậu :)

Mình cảm ơn nhiều nhé!
 
Upvote 0
Web KT
Back
Top Bottom