Dữ liệu trùng nhau giữa 2 cột (1 người xem)

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

bluesky2222

Thành viên mới
Tham gia
17/12/09
Bài viết
39
Được thích
2

File đính kèm

Lần chỉnh sửa cuối:
Chào cả nhà,
Mình đang cần lọc dữ liệu trùng nhau giữa 2 cột, mình dùng hàm countif, sau đó dùng cách đếm thủ công để lấy ra số trùng lặp.
Bây giờ mình đang muốn dùng công thức, nhưng không biết làm thế nào. Ai biết chỉ giúp mình
Như trong file viết "Cột B có, A không có" thì đếm bằng cái này
Nhập vào ô bất kỳ =SUM(IF(COUNTIF($A$2:$A$87,$B$2:$B$91)>0,0,1)) ---> nhấn Ctrl+Shift+Enter
 
Không phải như thế, mình muốn lấy giá trí, ví dụ: cột A có FN00000335711, cột B không có, thì mình cần hiển thị ra giá trị này.
Có lẽ bạn cho 1 file có kết quả giả định lên thì xử lý nhanh hơn ( Để biết kết quả trình bày thế nào )
 
Dùng cái này xem sao
Viết cho số số dữ liệu cột A và B bằng nhau
Nếu viết cho số liệu cột A và cột B không bằng nhau thì sao a.
Ví dụ cột B, mình sẽ xoá bớt khoảng 10 phần tử. Vậy thì "cột A có B không có" sẽ phải hiển hị những phần tử mà không có trong cột B.

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Nếu viết cho số liệu cột A và cột B không bằng nhau thì sao a.
Ví dụ cột B, mình sẽ xoá bớt khoảng 10 phần tử. Vậy thì "cột A có B không có" sẽ phải hiển hị những phần tử mà không có trong cột B.
Nhấn alt+F11, vào module1, dán đè cái này vào
PHP:
Public Sub TrungSoLieu()
Dim DL, Mau1, Mau2, Sd, Kq() As String, d As Long, i As Long, j As Long, k As Long

DL = Sheet1.Range("A2").CurrentRegion
Sd = UBound(DL)
ReDim Kq(1 To Sd, 1 To 3)
Sheet1.Range("D3:F" & Sd).Clear
Set Mau1 = CreateObject("Scripting.Dictionary")
Set Mau2 = CreateObject("Scripting.Dictionary")

For d = 2 To Sd * 2 - 1
If d <= Sd Then
Mau1.Add DL(d, 1), ""
Mau2.Add DL(d, 2), ""
Else

If Mau1.exists(DL(d - Sd + 1, 2)) Then
i = i + 1
Kq(i, 1) = DL(d - Sd + 1, 2)
Else
k = k + 1
Kq(k, 3) = DL(d - Sd + 1, 2)
End If

If Not Mau2.exists(DL(d - Sd + 1, 1)) Then
j = j + 1
Kq(j, 2) = DL(d - Sd + 1, 1)
End If

End If
Next d

Sheet1.Range("D3").Resize(Application.WorksheetFunction.Max(i, j, k), 3).Value = Kq

Set Mau1 = Nothing
Set Mau2 = Nothing

End Sub
 
MÌnh thêm vào rồi, nhưng nó không chạy, bị debug, hết dụng lượng tải rồi, nên ko tải được file lên. Runtime error 457
Không biết cấu trúc số liệu có giống ví dụ hay không?
Với file mẫu tại bài 1, code này chạy bình thường.
Upload file lên đâu đó rồi dán đường dẫn vào.
 
MÌnh thêm vào rồi, nhưng nó không chạy, bị debug, hết dụng lượng tải rồi, nên ko tải được file lên. Runtime error 457
Không xem file nhưng có lẽ dữ liệu trong cột A hoặc cột B bị trùng
Bạn dán code này vào sẽ hết lỗi

PHP:
Public Sub TrungSoLieu()
Dim DL, Mau1, Mau2, Sd, Thay, Kq() As String, d As Long, i As Long, j As Long, k As Long

DL = Sheet1.Range("A2").CurrentRegion
Sd = UBound(DL)
ReDim Kq(1 To Sd, 1 To 3)
Sheet1.Range("D3:F" & Sd).Clear
Set Mau1 = CreateObject("Scripting.Dictionary")
Set Mau2 = CreateObject("Scripting.Dictionary")

For d = 2 To Sd * 2 - 1
If d <= Sd Then
Mau1.Add DL(d, 1) & d, ""
Mau2.Add DL(d, 2) & d, ""
Else

Thay = d - Sd + 1
If Mau1.exists(DL(Thay, 2) & Thay) Then
i = i + 1
Kq(i, 1) = DL(Thay, 2)
Else
k = k + 1
Kq(k, 3) = DL(Thay, 2)
End If

If Not Mau2.exists(DL(Thay, 1) & Thay) Then
j = j + 1
Kq(j, 2) = DL(Thay, 1)
End If

End If
Next d

Sheet1.Range("D3").Resize(Application.WorksheetFunction.Max(i, j, k), 3).Value = Kq

Set Mau1 = Nothing
Set Mau2 = Nothing

End Sub
 
Lần chỉnh sửa cuối:
Mình làm theo câu lệnh của bạn, nhưng file bị lỗi, bạn xem file đính kèm rồi sửa giúp mình
File đính kèm, dữ liệu là text hay là number, số dòng cột A và B khác nhau đều được.
PHP:
Public Sub TrungSoLieu()
Dim DL, Mau1, Mau2, Sd, Thay, Kq() As String, d As Long, i As Long, j As Long, k As Long

DL = Sheet1.Range("A2").CurrentRegion
Sd = UBound(DL)
ReDim Kq(1 To Sd, 1 To 3)
Sheet1.Range("D3", Sheet1.Range("F1000000").End(xlUp)).Clear
Set Mau1 = CreateObject("Scripting.Dictionary")
Set Mau2 = CreateObject("Scripting.Dictionary")

For d = 2 To Sd
If Not Mau1.exists(DL(d, 1)) And DL(d, 1) <> "" Then
Mau1.Add DL(d, 1), ""
End If
If Not Mau2.exists(DL(d, 2)) And DL(d, 2) <> "" Then
Mau2.Add DL(d, 2), ""
End If
Next d

For d = 2 To Sd
If Mau1.exists(DL(d, 2)) Then
i = i + 1
Kq(i, 1) = DL(d, 2)
Else
k = k + 1
Kq(k, 3) = DL(d, 2)
End If

If Not Mau2.exists(DL(d, 1)) Then
j = j + 1
Kq(j, 2) = DL(d, 1)
End If
Next d

Sheet1.Range("D3").Resize(Sd, 3).Value = Kq

Set Mau1 = Nothing
Set Mau2 = Nothing

End Sub
----------------
Lỗi ở file trước là do dữ liệu trong một cột bị trùng và code phần add dic viết hơi ẩu.Sorry
Bạn kiểm tra xem, còn gì sẽ xử lý.
 

File đính kèm

Lần chỉnh sửa cuối:

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

Back
Top Bottom