Giải toán phân chia lớp học trong Excel (1 người xem)

Liên hệ QC

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

sangtranhm

Thành viên mới
Tham gia
31/5/16
Bài viết
10
Được thích
0
Em đang có bài toán chưa giải được đưa lên diễn đàn nhờ các GPE giải.


Câu 1: Dựa trên danh sách sinh viên được cung cấp, phân lớp cho sinh viên ký hiệu từ SE0401, SE0402... với các điều kiện sau:

· Số lớp là tối thiểu

· Phân bổ đều sinh viên theo lớp trong từng level Tiếng Anh

· Sĩ số của lớp không vượt quá 32 SV

Câu 2: Dựa trên kết quả học tập của SV và tiêu chí đánh giá SV đạt môn Tiếng Anh: điểm trung bình học tập trên 5 và điểm cuối kỳ trên 4, tính giá trị của các cột sau:

· Nhập điểm cuối kỳ lần 1 (FE) và lần 2 (FE2) của SV tại các Sheet “L1” và “L2”. Trường hợp không có điểm lần 2 thì FE2 để trống.

· Ave: Điểm TB học tập có trọng số của SV (thang điểm 10, tính chính xác 1 số sau dấu phảy). Điểm cuối kỳ: Nếu có điểm lần 2 thì lấy lần 2, không có thì lấy lần 1.

· Tình trạng: Tình trạng đạt hoặc Không đạt theo tiêu chí đánh giá. Nếu SV đạt, phân loại theo loại: xuất sắc (≥ 9.0), Giỏi: (8.0=>8.9), Khá: (7.0=>7.9), TB Khá: (6.0=>6.9), Trung bình: (5.0=>5.9)

· Xếp hạng: Xếp hạng của SV trong từng level Tiếng Anh (Rank/TS SV trong level)

· Thống kê các status của SV theo lớp về số lượng Khá, Giỏi... (theo form tại Sheet “TT”)
 

File đính kèm

Em đang có bài toán chưa giải được đưa lên diễn đàn nhờ các GPE giải.


Câu 1: Dựa trên danh sách sinh viên được cung cấp, phân lớp cho sinh viên ký hiệu từ SE0401, SE0402... với các điều kiện sau:

· Số lớp là tối thiểu

· Phân bổ đều sinh viên theo lớp trong từng level Tiếng Anh

· Sĩ số của lớp không vượt quá 32 SV

Câu 2: Dựa trên kết quả học tập của SV và tiêu chí đánh giá SV đạt môn Tiếng Anh: điểm trung bình học tập trên 5 và điểm cuối kỳ trên 4, tính giá trị của các cột sau:

· Nhập điểm cuối kỳ lần 1 (FE) và lần 2 (FE2) của SV tại các Sheet “L1” và “L2”. Trường hợp không có điểm lần 2 thì FE2 để trống.

· Ave: Điểm TB học tập có trọng số của SV (thang điểm 10, tính chính xác 1 số sau dấu phảy). Điểm cuối kỳ: Nếu có điểm lần 2 thì lấy lần 2, không có thì lấy lần 1.

· Tình trạng: Tình trạng đạt hoặc Không đạt theo tiêu chí đánh giá. Nếu SV đạt, phân loại theo loại: xuất sắc (≥ 9.0), Giỏi: (8.0=>8.9), Khá: (7.0=>7.9), TB Khá: (6.0=>6.9), Trung bình: (5.0=>5.9)

· Xếp hạng: Xếp hạng của SV trong từng level Tiếng Anh (Rank/TS SV trong level)

· Thống kê các status của SV theo lớp về số lượng Khá, Giỏi... (theo form tại Sheet “TT”)
Mình làm câu phân chia lớp, CT tại D5:
Mã:
D5=INDEX("SE04"&TEXT(ROW($1:$100),"00"),MATCH(TRUE,MOD(COUNTIF($E$5:E5,E5)-1,21)+1<=ROW($1:$21)/(COUNTIF($D$4:D4,"SE04"&TEXT(ROW($1:$100),"00"))<32),))
Ctrl+Shift+Enter rồi fill xuống!!!
P/s: mình chia từ trên xuống, số 21 trong công thức nếu có thay đổi data bạn tính tay rồi đưa vào lại nhe (=tổng số học sinh/32 rồi làm tròn lên Roundup(,0)), mình không đưa chay tự động vào công thức luôn vì nó chay lâu quá, chả hiểu sao có vài trăm dòng mà nặng chắc do hàm Countif, tính làm chạy ngẫu nhiên mà nặng quá nên thôi!!!!:p:p:p!!!!
 

File đính kèm

Mình làm câu phân chia lớp, CT tại D5:
Mã:
D5=INDEX("SE04"&TEXT(ROW($1:$100),"00"),MATCH(TRUE,MOD(COUNTIF($E$5:E5,E5)-1,21)+1<=ROW($1:$21)/(COUNTIF($D$4:D4,"SE04"&TEXT(ROW($1:$100),"00"))<32),))
Ctrl+Shift+Enter rồi fill xuống!!!
P/s: mình chia từ trên xuống, số 21 trong công thức nếu có thay đổi data bạn tính tay rồi đưa vào lại nhe (=tổng số học sinh/32 rồi làm tròn lên Roundup(,0)), mình không đưa chay tự động vào công thức luôn vì nó chay lâu quá, chả hiểu sao có vài trăm dòng mà nặng chắc do hàm Countif, tính làm chạy ngẫu nhiên mà nặng quá nên thôi!!!!:p:p:p!!!!
Công thức khủng bổ Anh ơi, ngưỡng mộ quá
 
Cảm ơn bác nhé quá ngưỡng mộ công thức của bác luôn.
 
Mình làm câu phân chia lớp, CT tại D5:
Mã:
D5=INDEX("SE04"&TEXT(ROW($1:$100),"00"),MATCH(TRUE,MOD(COUNTIF($E$5:E5,E5)-1,21)+1<=ROW($1:$21)/(COUNTIF($D$4:D4,"SE04"&TEXT(ROW($1:$100),"00"))<32),))
Ctrl+Shift+Enter rồi fill xuống!!!
P/s: mình chia từ trên xuống, số 21 trong công thức nếu có thay đổi data bạn tính tay rồi đưa vào lại nhe (=tổng số học sinh/32 rồi làm tròn lên Roundup(,0)), mình không đưa chay tự động vào công thức luôn vì nó chay lâu quá, chả hiểu sao có vài trăm dòng mà nặng chắc do hàm Countif, tính làm chạy ngẫu nhiên mà nặng quá nên thôi!!!!:p:p:p!!!!
Công thức ghê thiệt, thử đổi dữ liệu mà Excel đơ mấy lần. Phải copy mỗi lần 5 ô rồi paste value ngay mới không đơ :).
Tôi thử thì hình như kết quả chưa đúng với yêu cầu. Tôi thử sửa 21 học viên cuối danh sách thành "level" 6 thì thấy 21 người này không được phân đều vào 21 lớp (có lớp 2 người, có lớp không có).
Tôi nghĩ bài này đơn giản thôi. Tôi phân lớp như thế này:
- Xác định số lớp tối thiểu, với dữ liệu trong file là 21 lớp.
- Bắt đầu tư "level" 1, phân đều vào các lớp theo thứ tự lớp từ đầu tới cuối (từ 1 đến 21), nếu hết 21 lớp mà còn học viên "level" 1 thì tiếp tục quay lại lớp đầu tiên.
- Hết "level" 1 thì tiếp tục "level" 2 bắt đầu từ lớp tiếp theo lớp có học viên "level" 1 cuối cùng (ví dụ có 4 học viên "level" 1, học liên "level" 1 cuối cùng sẽ xếp vào lớp 4 thì học viên đầu tiên "level" 2 sẽ xếp vào lớp 5). Tiếp tục cho đến hết danh sách.

Chuyển thành công thức Excel thì như thế này:
Trường hợp danh sách học viên đã được nhóm theo "level" như trong file:
Mã:
="SE04"&TEXT(MOD(ROW(A1)-1,ROUNDUP(ROWS($A$5:$A$650)/32,0))+1,"00")
Trường hợp danh sách học viên không được nhóm theo "level":
Mã:
="SE04"&TEXT(MOD(COUNTIF($E$5:$E$650,"<"&E5)+COUNTIF($E$5:$E5,E5)-1,ROUNDUP(ROWS($A$5:$A$650)/32,0))+1,"00")
 
Web KT

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

Back
Top Bottom