Chia lớp theo học lực

Liên hệ QC

buithinhvan77

Thành viên thường trực
Tham gia
18/8/10
Bài viết
268
Được thích
137
Mình có một Sheet danh sách học sinh lớp 5 (cũ) toàn trường. Bây giờ mình muốn chia thành 3 lớp 6 (mới) sang 3 Sheet Danh sach lop sao cho số HSG, HS khá, HS TB vào các lớp bằng nhau. Nếu số HS chia bị lẻ thì lớp cuối cùng sẽ là ít nhất! (Nếu có thể thì chia thành n lớp tuỳ ý được không vơi số HS mỗi lớp không quá 45 và không dưới 35) Mong mọi người giúp!
 

File đính kèm

  • Danh sach tuyen sinh 6.xls
    61.5 KB · Đọc: 48
Mình có một Sheet danh sách học sinh lớp 5 (cũ) toàn trường. Bây giờ mình muốn chia thành 3 lớp 6 (mới) sang 3 Sheet Danh sach lop sao cho số HSG, HS khá, HS TB vào các lớp bằng nhau. Nếu số HS chia bị lẻ thì lớp cuối cùng sẽ là ít nhất! (Nếu có thể thì chia thành n lớp tuỳ ý được không vơi số HS mỗi lớp không quá 45 và không dưới 35) Mong mọi người giúp!
Anh/Chị thử code sau nhé:
PHP:
Sub ChiaLop()
    Dim n As Byte, i As Integer, j As Byte
    n = InputBox("Nhap so lop can chia:")
    If n < 1 Then Exit Sub
    Application.DisplayAlerts = False
    Do While Sheets.Count > 2
        Sheets(Sheets.Count).Delete
    Loop
    Application.DisplayAlerts = True
    For i = 1 To n
        Sheet2.Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "6." & i
    Next
    Sheet1.[A5].CurrentRegion.Sort Sheet1.[F5], xlAscending, Header:=xlYes
    For i = 6 To Sheet1.[B65536].End(xlUp).Row Step n
        For j = 0 To n - 1
            Sheets("6." & j + 1).[B65536].End(xlUp).Offset(1).Resize(, 8).Value = Sheet1.Cells(i + j, 2).Resize(, 8).Value
        Next
    Next
End Sub
Code trên đáp ứng được vấn đề chia thành n lớp bất kỳ (n>=1). Tuy nhiên chưa đáp ứng được vấn đề số học sinh mỗi lớp từ 35 đến 45. Việc này không khó, chỉ cần so sánh các số: Tổng số HS chia cho n với các số 35 và 45 là được, nhưng có lẽ vấn đề này chưa quan trọng nên chúng ta sẽ bàn tiếp sau.
 

File đính kèm

  • Danh sach tuyen sinh 6.rar
    21.3 KB · Đọc: 76
Mình có một Sheet danh sách học sinh lớp 5 (cũ) toàn trường. Bây giờ mình muốn chia thành 3 lớp 6 (mới) sang 3 Sheet Danh sach lop sao cho số HSG, HS khá, HS TB vào các lớp bằng nhau. Nếu số HS chia bị lẻ thì lớp cuối cùng sẽ là ít nhất! (Nếu có thể thì chia thành n lớp tuỳ ý được không vơi số HS mỗi lớp không quá 45 và không dưới 35) Mong mọi người giúp!
Tôi thấy cái vụ chia lớp này cũng khá đơn giản mà. Trên tiêu chí chia số học sinh sao cho học lực được chia đều cho các lớp. Vậy tôi sẽ làm như sau:
- Sort dữ liệu theo cột HL (cho các học sinh cùng HL nằm gần nhau
- Tại 1 cột phụ (chẳng hạn cột K), gõ số thứ tự 1, 2, 3 rồi lại 1, 2, 3 cho đến hết 1 nhóm cùng học lực
- Lại đánh số thứ tự như trên cho nhóm có học lực khác
- Đánh số thứ tự xong, sort lại dữ liệu theo cột phụ này
- Bây giờ ta phân lớp nhu sau:
a> Copy toàn bộ nhưng học sinh có số thứ tự ở cột phụ là 1 về lớp thứ nhất.
b> Copy toàn bộ nhưng học sinh có số thứ tự ở cột phụ là 2 về lớp thứ hai.
c> Copy toàn bộ nhưng học sinh có số thứ tự ở cột phụ là 3 về lớp thứ ba.​
- Vì là chia 3 lớp nên ta đánh số thứ tự từ 1 đến 3. Nếu chia n lớp thì đánh số thứ tự từ 1 đến n
Đơn giản thế thôi! Làm bằng tay tôi làm chưa đầy 1 phút
 
Coi như là 1 tham khảo về giải thuật

Sửa lại cho hoàn hảo rồi đây:
 

File đính kèm

  • gpeGiaoDuc.rar
    17.7 KB · Đọc: 105
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom