Lọc ra danh sách không trùng tên (1 người xem)

Liên hệ QC

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

cuonghoa176

Hỏi nhiều
Tham gia
31/1/11
Bài viết
169
Được thích
23
Giới tính
Nam
Nghề nghiệp
Giáo viên THCS
Tôi gặp vấn đề này, nhờ các Bác giúp đỡ:
Tôi có DSHS của các lớp (Cột A). Mỗi lớp có một số HS thuộc diện hộ nghèo (Cột B) Làm sao để lọc ra DSHS còn lại (Sang cột C) bởi số HS này sẽ thuộc diện hộ cận nghèo?
(Tên ở cột A và B có thể sai lệch do quá trình lập DS, việc này sẽ sửa sau..)
 

File đính kèm

Công thức cho anh tham khảo (chỉ tham khảo thui chứ không dùng được vì tới hơn 1000 dòng)
Mã:
=INDEX($A$2:$A$1040,SMALL(IF(COUNTIF($B$2:$B$1040,$A$2:$A$1040)=0,ROW(INDIRECT("1:"&ROWS($A$2:$A$1040))),""),ROW(1:1)))
VBA
Mã:
Sub TachKhongTrung()
Dim Arr, Res
Dim k As Long, i As Long
Arr = Range("A2:B" & Range("A65536").End(3).Row)
ReDim Res(1 To UBound(Arr, 1), 1 To 1)
With CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Arr)
        If Not .Exists(Arr(i, 2)) Then
            .Add Arr(i, 2), ""
        End If
    Next
    For i = 1 To UBound(Arr, 1)
        If Not .Exists(Arr(i, 1)) Then
            k = k + 1
            Res(k, 1) = Arr(i, 1)
        End If
    Next
End With
Range("D2").Resize(k, 1) = Res
End Sub
 

File đính kèm

Tôi gặp vấn đề này, nhờ các Bác giúp đỡ:
Tôi có DSHS của các lớp (Cột A). Mỗi lớp có một số HS thuộc diện hộ nghèo (Cột B) Làm sao để lọc ra DSHS còn lại (Sang cột C) bởi số HS này sẽ thuộc diện hộ cận nghèo?
(Tên ở cột A và B có thể sai lệch do quá trình lập DS, việc này sẽ sửa sau..)

Nói cho cùng thì bài toán của bạn là: LỌC CÁC PHẦN TỬ CÓ TRONG DS1 MÀ KHÔNG CÓ TRONG DS2
Loại này có cả rừng trên diễn đàn rồi ---> Dùng Advanced Filter là được ----> công thức điều kiện =AND(COUNTIF($B$2:$B$10000,$A2)=0,LEN($A2))
 
Công thức cho anh tham khảo (chỉ tham khảo thui chứ không dùng được vì tới hơn 1000 dòng)
Mã:
=INDEX($A$2:$A$1040,SMALL(IF(COUNTIF($B$2:$B$1040,$A$2:$A$1040)=0,ROW(INDIRECT("1:"&ROWS($A$2:$A$1040))),""),ROW(1:1)))
VBA
Mã:
Sub TachKhongTrung()
Dim Arr, Res
Dim k As Long, i As Long
Arr = Range("A2:B" & Range("A65536").End(3).Row)
ReDim Res(1 To UBound(Arr, 1), 1 To 1)
With CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Arr)
        If Not .Exists(Arr(i, 2)) Then
            .Add Arr(i, 2), ""
        End If
    Next
    For i = 1 To UBound(Arr, 1)
        If Not .Exists(Arr(i, 1)) Then
            k = k + 1
            Res(k, 1) = Arr(i, 1)
        End If
    Next
End With
Range("D2").Resize(k, 1) = Res
End Sub

Danh sách như sau đã có trong DS nghèo nhưng vẫn được liệt kê vào DS cận nghèo

Lò Văn Hùng
Lò Văn Loan
Quàng Văn Nghĩa
Lò Văn Ngoan
Lường Thị Chiêu
Lò Thị Vui
Quàng Văn Diên
Quàng Thị Duân
Quàng Thị Duân
Lò Văn Cường
Lò Văn Bang
Tòng Thị Đoạn
Tòng Văn Hồng
Lò Thị Quý
 
Danh sách như sau đã có trong DS nghèo nhưng vẫn được liệt kê vào DS cận nghèo

Lò Văn Hùng
Lò Văn Loan
.......

Cái này là do 2 danh sách nhập không cùng chuẩn
- "Lò Văn Hùng" ở cell A259 nhập theo mã Unicode tổ hợp
- "Lò Văn Hùng" ở cell B264 nhập theo mã Unicode dựng sẵn
---------------
Dictionary không hiểu 2 chú "Lò" này là một nhưng Advanced Filter thì lại hiểu
 
Cũng xin góp ý thêm với chủ topic, thường thì người ta lọc dựa vào mã chứ không ai dựa vào tên, vì sẽ có tên trùng, kết quả sẽ không biết đường nào mà lần.
 
Web KT

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

Back
Top Bottom