Lọc dữ liệu trùng nhau theo thứ tự nguyện vọng từ thấp đến cao (1 người xem)

Liên hệ QC

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

vodinhnam

Thành viên mới
Tham gia
7/8/11
Bài viết
29
Được thích
1
Em kính chào các anh, chị
Hiện tại em có 1 file danh sách sinh viên, mỗi SV đậu cùng 1 lúc nhiều trường theo những nguyện vọng khác nhau.
Bài toán đặt ra là lọc trong danh sách này để lấy ra mỗi sinh viên chỉ đậu vào 1 ngành duy nhất có số thứ tự của nguyện vọng là nhỏ nhất.
File em đính kèm là file ví dụ nên ít dữ liệu, file thực tế trên 20k row nên XL thủ công lâu lắm ạ.
Em xin cám ơn./.
 

File đính kèm

Lần chỉnh sửa cuối:
Em kính chào các anh, chị
Hiện tại em có 1 file danh sách sinh viên, mỗi SV đậu cùng 1 lúc nhiều trường theo những nguyện vọng khác nhau.
Bài toán đặt ra là lọc trong danh sách này để lấy ra mỗi sinh viên chỉ đậu vào 1 ngành duy nhất có số thứ tự của nguyện vọng là nhỏ nhất.
File em đính kèm là file ví dụ nên ít dữ liệu, file thực tế trên 20k row nên XL thủ công lâu lắm ạ.
Em xin cám ơn./.

Trong file không thấy "dính liếu" gì với DS sinh viên.
 
Dạ, sorry anh, em attach nhầm file, em edit lại rồi, anh xem giúp em với ạ.
Tks anh.

Tôi làm bằng VBA nhé, bạn chọn Enable Macros khi mở file, bấm vào nút GPE.
Chưa biết thông tin cột nào là duy nhất nên tôi lấy theo số CMND
 

File đính kèm

Tôi làm bằng VBA nhé, bạn chọn Enable Macros khi mở file, bấm vào nút GPE.
Chưa biết thông tin cột nào là duy nhất nên tôi lấy theo số CMND
Dạ, em cám ơn anh.
Trong đoạn code, anh có ghi:
For I = 1 To R
Tem = sArr(I, 5)
Số 5 ở đây có nghĩa là giới hạn trong 5 nguyện vọng ở cột 19 phải không anh?
Nếu số NV là n thì cho I chạy đến n phải không?
 
Mình đang nghĩ cách đơn giản nhất là:
Bước 1: Sort Data (tăng dần) theo nguyện vọng
Bước 2: Sort Data theo số CMND
Sau đó thì xử lý dễ thôi đúng không. Bạn tham khảo thêm file đính kèm.
 

File đính kèm

Dạ, em cám ơn anh.
Trong đoạn code, anh có ghi:
For I = 1 To R
Tem = sArr(I, 5)
Số 5 ở đây có nghĩa là giới hạn trong 5 nguyện vọng ở cột 19 phải không anh?
Nếu số NV là n thì cho I chạy đến n phải không?

Số 5 là cột thứ 5 (CMND), chẳng liên quan gì đến bao nhiêu nguyện vọng.
Có 100 nguyện vọng nó vẫn tìm cái nhỏ nhất.
 
Nếu không muốn dùng vba bạn thử dùng công thức này xem: (Ctrl-Shift-Enter thay vì enter nhé)
Mã:
T2 =IF(LARGE(($E$2:$E$446=E2)*($S$2:$S$446),COUNTIF($E$2:$E$446,E2))=S2,"Chọn", "")
Tuy nhiên, nếu như dữ liệu nhiều dòng quá thì cách nhanh nhất là sort data như nêu tại Post #4.
 
Web KT

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

Back
Top Bottom