Dùng VBA, lọc danh sách sinh viên theo thứ tự nguyện vọng

Liên hệ QC

vodinhnam

Thành viên mới
Tham gia
7/8/11
Bài viết
29
Được thích
1
Chào toàn thể anh, chị em GPE,

Mình có 1 file dữ liệu do sinh viên đăng ký các nguyện vọng (NV), mỗi SV có thể đăng ký nhiều NV (sheet 1).
Giờ mình muốn tìm trong sheet 1 các sinh viên nào đăng ký nhiều hơn 01 NV và có NV bất kỳ (giả sử NV thứ i) có mã ngành thỏa mãn điều kiện LỌC được nêu ở sheet LOC. Sau đó copy toàn bộ các thông tin từ NV thứ i đến NV cuối cùng sang sheet LOC.
Rất mong bà con GPE giúp đỡ.
Đang cao điểm dịch, chúc bà con an toàn, sức khỏe.
Trân trọng cám ơn./.
 

File đính kèm

  • DS loc theo dieu kien.xlsx
    9.7 KB · Đọc: 25
Điều kiện của bạn là: " muốn tìm trong sheet 1 các sinh viên nào đăng ký nhiều hơn 01 NV và có NV bất kỳ (giả sử NV thứ i) có mã ngành thỏa mãn điều kiện LỌC được nêu ở sheet LOC"
Nhưng kết quả chép qua LOC không tương đồng:
Dòng 1 thỏa mãn đúng mã ngành nhưng lại không thỏa mãn nhiều hơn 1 nguyện vọng
Dóng 5 nhiều hơn 1 nguyện vọng nhưng không đúng mã ngành
1625467161930.png

Vậy thực sự bạn muốn gì?

 
Điều kiện của bạn là: " muốn tìm trong sheet 1 các sinh viên nào đăng ký nhiều hơn 01 NV và có NV bất kỳ (giả sử NV thứ i) có mã ngành thỏa mãn điều kiện LỌC được nêu ở sheet LOC"
Nhưng kết quả chép qua LOC không tương đồng:
Dòng 1 thỏa mãn đúng mã ngành nhưng lại không thỏa mãn nhiều hơn 1 nguyện vọng
Dóng 5 nhiều hơn 1 nguyện vọng nhưng không đúng mã ngành
View attachment 261874

Vậy thực sự bạn muốn gì?

Dòng 1 đúng mã ngành và nếu bạn nhìn vào mã HS thì đây là 1 sinh viên có đăng ký 5NV. Vì vậy sẽ copy tất cả các NV từ NV1 đến NV cuối cùng sang sheet LOC.
 
Dòng 1 đúng mã ngành và nếu bạn nhìn vào mã HS thì đây là 1 sinh viên có đăng ký 5NV. Vì vậy sẽ copy tất cả các NV từ NV1 đến NV cuối cùng sang sheet LOC.
Bạn có thấy là điều kiện bạn nêu có chữ VÀ không nhỉ, tức là phải thỏa mãn đồng thời cả 2 đấy!
Nếu không phải VÀ mà là HOẶC thì sinh viên ở dòng 3 của Sheet1 đáp ứng điều kiện => tại sao không chép sang?
 
Bạn có thấy là điều kiện bạn nêu có chữ VÀ không nhỉ, tức là phải thỏa mãn đồng thời cả 2 đấy!
Nếu không phải VÀ mà là HOẶC thì sinh viên ở dòng 3 của Sheet1 đáp ứng điều kiện => tại sao không chép sang?
chỉ xét VÀ thôi bạn nhé
 
Bạn giải thích giùm: Mã ngành bạn muốn lọc là 7310101, kết quả mong muốn của bạn có 5 mã ngành khác nhau?

.
Nghĩa là tìm trong Sheet 1 có SV nào đk nhiều NV và có NV thứ i là 7310101 thì sẽ thực hiện COPY các dòng từ NV thứ i đến VN cuối cùng sang Sheet LOC.
 

File đính kèm

  • DS loc theo dieu kien_vodinhnam.xlsm
    20.1 KB · Đọc: 14
Chào toàn thể anh, chị em GPE,

Mình có 1 file dữ liệu do sinh viên đăng ký các nguyện vọng (NV), mỗi SV có thể đăng ký nhiều NV (sheet 1).
Giờ mình muốn tìm trong sheet 1 các sinh viên nào đăng ký nhiều hơn 01 NV và có NV bất kỳ (giả sử NV thứ i) có mã ngành thỏa mãn điều kiện LỌC được nêu ở sheet LOC. Sau đó copy toàn bộ các thông tin từ NV thứ i đến NV cuối cùng sang sheet LOC.
Rất mong bà con GPE giúp đỡ.
Đang cao điểm dịch, chúc bà con an toàn, sức khỏe.
Trân trọng cám ơn./.
Dùng tạm code chuối này xem.
Thêm dũ liệu vào và chạy thử, chỗ để kết quả trả về do bạn thay đổi (kết quả trả về của code là Ô B20)
chúc vui, khỏe
 

File đính kèm

  • DS loc SV theo dieu kien.xlsm
    21.1 KB · Đọc: 7
Dùng tạm code chuối này xem.
Thêm dũ liệu vào và chạy thử, chỗ để kết quả trả về do bạn thay đổi (kết quả trả về của code là Ô B20)
chúc vui, khỏe
Thử điều kiện lọc là 7480201 thì kết quả không đúng bạn ơi
1625477295661.png
Cùng mã ngành nhưng 3 cậu sinh viên khác nhau (cột vàng), mỗi cậu chỉ 1 nguyện vọng
 
Bạn xem thử tôi đoán có đúng ý bạn không
Bài này hình như chưa thoả ( hình như thôi nhé), thí du ở sheet1 [F3] đổi thành 7310101, chạy code ra kết quả 2 nguyện vọng của học sinh có mã XHB137185 rồi.....xong
Theo mình sau khi tóm được em trên sẽ tóm tiếp 5 nguyện vọng của học sinh có mã XHB137202
Thân
 
Bài này hình như chưa thoả ( hình như thôi nhé), thí du ở sheet1 [F3] đổi thành 7310101, chạy code ra kết quả 2 nguyện vọng của học sinh có mã XHB137185 rồi.....xong
Theo mình sau khi tóm được em trên sẽ tóm tiếp 5 nguyện vọng của học sinh có mã XHB137202
Thân
Tôi cũng thử trường hợp đó rồi và ý của tôi là tóm 2 chú SV có mã số như vậy, còn không biết ông thớt muốn gì nữa bạn ơi!
 
Tôi nghĩ: thế sao kết quả mong muốn của thớt không có 2 SV đó. Do đó tôi suy ra hướng mà tôi đã làm
Câu hỏi của bạn í trong bài này rất rõ:
1) Tìm trong cột 6 ( mã ngành ) em nào giống với điều kiện lọc thì giữ em đó lại
2) Tìm xem cái em vừa giữ lại có đăng ký hơn 1 nguyện vọng không, nếu có thì liệt kê ra, nếu không thì thôi
Cái này là ý của mình thôi nhé
Thân
 
Thử điều kiện lọc là 7480201 thì kết quả không đúng bạn ơi
View attachment 261897
Cùng mã ngành nhưng 3 cậu sinh viên khác nhau (cột vàng), mỗi cậu chỉ 1 nguyện vọng

Cảm ơn anh đã chỉ giáo. tôi đọc không kỹ yêu cầu của chủ thớt. điều chỉnh lại code cho kiểm tra mã SV thu được sau khi đã lọc theo mã ngành trong danh sách SV nếu > 1 thì chọn. Tôi dùng kiểu vừa mảng vừa sheet như sau:
If Application.CountIf(Sheets("DS").Range("B2:B" & d), sArr(m, 1)) > 1 Then
Thấy chạy thử thì cũng đúng yêu cầu của đề bài. nhưng không biết dữ liệu 80.000 dòng thì có ổn không. Nếu có thể anh bày cho tôi cách khác hay hơn để tôi học tập nhé.
Trân trọng!
 

File đính kèm

  • DS loc SV theo dieu kien (1).xlsm
    21.2 KB · Đọc: 12
Web KT
Back
Top Bottom