Giúp mình sửa lỗi sai trong lọc advanced filter (1 người xem)

Liên hệ QC

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

mickeybh

Thành viên hoạt động
Tham gia
26/9/13
Bài viết
156
Được thích
33
Gửi các anh/chị và các bạn!

Trong file đính kèm mình có dùng advanced filter để lọc những bệnh nhân có cùng mã thẻ bảo hiểm nhưng khác họ và tên.
Vùng điều kiện $G$1:$G$2
Kết quả sau khi lọc đặt ở $H$2:$L$2
Những ô màu vàng là những kết quả bị sai do kết quả đưa ra thiếu.
Ví dụ tại L6: mã thẻ CH7661201000013, tên Phan Thị Sen nhưng bên dữ liệu gốc cũng có người trùng mã thẻ đó nhưng tên là Phạm Thị Sen thì nó lại không đưa sang.

Mong các bạn chỉ ra chổ sai dùm mình.
 

File đính kèm

Gửi các anh/chị và các bạn!

Trong file đính kèm mình có dùng advanced filter để lọc những bệnh nhân có cùng mã thẻ bảo hiểm nhưng khác họ và tên.
Vùng điều kiện $G$1:$G$2
Kết quả sau khi lọc đặt ở $H$2:$L$2
Những ô màu vàng là những kết quả bị sai do kết quả đưa ra thiếu.
Ví dụ tại L6: mã thẻ CH7661201000013, tên Phan Thị Sen nhưng bên dữ liệu gốc cũng có người trùng mã thẻ đó nhưng tên là Phạm Thị Sen thì nó lại không đưa sang.

Mong các bạn chỉ ra chổ sai dùm mình.
Công thức lọc của bạn:
Mã:
=AND(COUNTIF($B$3:$B$1719,B3)<2,COUNTIF($E$3:$E$1719,E3)>1)
cho thấy kết quả lọc sẽ là những bản ghi mà cột E bị trùng (có từ 2 bản ghi trở lên), còn cột B không trùng (chỉ duy nhất).
Bây giờ xét trường hợp bạn chỉ ra: Trường hợp này thì tên Phạm Thị Sen không phải là duy nhất (xuất hiện tại STT 1030 và STT 1352). Tương tự, với mã BT4661201000015 thì tên Luư Thị Than là duy nhất nhưng tên Lưu Thị Than thì lại không phải là duy nhất (xuất hiện tại STT 308, 400 và 705) nên không thỏa mãn điều kiện lọc. Do đó những trường hợp này không được đưa qua bảng kết quả là đúng rồi.

Cách xử lý đơn giản nhất là sửa công thức lọc thành =COUNTIF($E:$E,$E3)>1. Sau khi lọc xong thì sắp xếp lại theo cột Mã thẻ. Vậy là xong.
 
Cảm ơn bạn!
Nếu vậy những người đúng cũng bị lôi ra luôn. Có cách nào khác không bạn?
 
Cảm ơn bạn!
Nếu vậy những người đúng cũng bị lôi ra luôn. Có cách nào khác không bạn?
Vậy mục đích của bạn lọc như vậy để làm gì? Excel sao có thể biết trường hợp nào nhập đúng, trường hợp nào nhập sai. Hơn nữa số lần nhập đúng và số lần nhập sai cũng đâu có ràng buộc gì đâu (đâu biết anh nào nhiều hơn anh nào). Vậy nên cứ liệt kê ra hết những trường hợp trùng mã thẻ, còn quyết định ra sao với kết quả lọc thì tùy bạn thôi.
 
Để mình nói ra chút ý nghĩa của việc này:
Ví dụ 1 người có tên nguyễn văn a có mã thẻ 123 (trường hợp này đúng)
1 người khác (do gõ sai): nguyễn văn á có mã thẻ 123 (trường hợp này được hiểu là sai do mình biết chính xác là nguyễn văn á sai nên mình sẽ sửa á thành a để thanh toán với bảo hiểm) nếu để nguyên thì bảo hiểm sẽ xuất toán.
 
Để mình nói ra chút ý nghĩa của việc này:
Ví dụ 1 người có tên nguyễn văn a có mã thẻ 123 (trường hợp này đúng)
1 người khác (do gõ sai): nguyễn văn á có mã thẻ 123 (trường hợp này được hiểu là sai do mình biết chính xác là nguyễn văn á sai nên mình sẽ sửa á thành a để thanh toán với bảo hiểm) nếu để nguyên thì bảo hiểm sẽ xuất toán.
Chuyện tên A hay tên Á đúng là do bạn nhận biết một cách chủ quan, còn Excel thì đâu có khả năng đó. Việc Excel làm chỉ là lọc ra những trường hợp trùng nhau về mã thẻ, còn vấn đề bạn muốn sửa tên cho đúng thì ít ra bạn phải có một danh sách tên đúng tương ứng với các mã thẻ, và việc sửa lại tên ở bảng dữ liệu nguồn cho đúng có lẽ cũng phải dùng đến VBA. Tôi nêu ra ý tưởng như thế này, bạn thử triển khai xem sao:
1. Lọc danh sách trùng Mã thẻ như bài trên, sử dụng phương thức AdvancedFilter của VBA để giải quyết.
2. Duyệt một lượt danh sách Mã thẻ ở kết quả lọc trong danh sách tên chính xác, nếu tên đã lọc trùng với tên chính xác thì thôi, ngược lại thì lấy tên chính xác này gán ngược trở lại vào dữ liệu nguồn (có thể dựa vào cột STT để xác định chính xác vị trí cần thay thế). Trong bước này bạn có thể sử dụng phương thức Find để giải quyết.
 
Trước đây mình có gửi 1 ví dụ lên ở topic này:
http://www.giaiphapexcel.com/forum/...ống-nhau-nhưng-khác-họ-và-tên-ra-1-sheet-khác
Kết quả thì đúng nhưng dữ liệu bây giờ phát sinh thêm 2 cột, code thì khó hiểu quá nên mình không thể tùy biến được nên đành chuyển sang lọc advanced filter nhưng kết quả lại không cho ra như ý muốn.

Mong các bạn giúp mình code lọc ra những bệnh nhân có cùng mã thẻ nhưng khác tên.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom