Chia lớp theo học lực

Liên hệ QC
Bạn thử code này.
Mã:
Option Explicit

Private Function UniqueRandomNum(Bottom As Long, Top As Long, Amount As Long)
  On Error Resume Next
  If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1
  With CreateObject("Scripting.Dictionary")
    Do
      .Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, ""
    Loop Until .Count = Amount
    UniqueRandomNum = .Keys
  End With
End Function
Private Function LayDS(Rng As Range, Optional aCot = 5, Optional LOAI As String = "Trung bình")
    Dim aRow%, aCol%, i&, j&, k&
    Dim Arr, TempDes, Des, TT
    aRow = Rng.Rows.Count: aCol = Rng.Columns.Count
    Arr = Rng.Value
    aRow = UBound(Arr, 1): aCol = UBound(Arr, 2)
    ReDim TempDes(1 To aRow, 1 To aCol + 2)
    For i = 1 To aRow
        If Arr(i, aCot) = LOAI Then
            k = k + 1: TempDes(k, 1) = k
            For j = 1 To aCol
                TempDes(k, j + 1) = Arr(i, j)
            Next j
        End If
    Next i
    If k = 0 Then Exit Function
    TT = UniqueRandomNum(1, k, k)
    ReDim Des(1 To k, 1 To aCol + 2)
    aCol = UBound(TempDes, 2)
    For i = 1 To k
        For j = 1 To aCol
            If j = aCol Then
                Des(i, j) = TT(i - 1)
            Else
                Des(i, j) = TempDes(i, j)
            End If
        Next j
    Next i
    LayDS = Des
End Function
Private Function WorksheetExists(shtName As String, Optional wb As Workbook) As Boolean
    Dim sht As Worksheet
    If wb Is Nothing Then Set wb = ThisWorkbook
    On Error Resume Next
    Set sht = wb.Sheets(shtName)
    On Error GoTo 0
    WorksheetExists = Not sht Is Nothing
End Function
Private Function TachDS(DS, SL As Integer, aIndex As Integer, TT As Integer)
    Dim i%, j%, k%, Max%, Des
    k = 0: Max = SL + aIndex - 1
    If Max > UBound(DS, 1) Then Max = UBound(DS, 1)
    ReDim Des(1 To (Max - aIndex + 1), 1 To UBound(DS, 2))
    For i = aIndex To Max
        k = k + 1: Des(k, 1) = TT + k - 1
        For j = 2 To UBound(DS, 2)
            Des(k, j) = DS(CInt(DS(i, 7)), j - 1)
        Next j
    Next i
    TachDS = Des
End Function
Sub ChiaLop()
    Const SOLOP = 7
    Dim sh As Worksheet, DS(1 To 3) As Variant, TENLOP, LOAI, i%, j%
    Dim Rng As Range, SoHS%, ViTri%, TT%, TTLoai%, aStep%
    Dim Tach_DS
    TENLOP = Array("LOP1", "LOP2", "LOP3", "LOP4", "LOP5", "LOP6", "LOP7")
    LOAI = Array("Gi" & ChrW(7887) & "i", "Khá", "Trung bình")
    Set Rng = Sheet1.Range("C10:G" & Sheet1.Range("G10000").End(xlUp).Row)
    SoHS = Rng.Rows.Count \ SOLOP
    For i = 1 To 3
        DS(i) = LayDS(Rng, , CStr(LOAI(i - 1)))
    Next i
    For i = LBound(TENLOP) To UBound(TENLOP)
        If WorksheetExists(CStr(TENLOP(i))) Then
            Application.DisplayAlerts = False
            ThisWorkbook.Sheets(CStr(TENLOP(i))).Delete
            Application.DisplayAlerts = True
        End If
        ThisWorkbook.Sheets("Sheet1").Copy after:=Sheets(Sheets.Count)
        Set sh = ThisWorkbook.Sheets(Sheets.Count)
        sh.Name = CStr(TENLOP(i))
        sh.Range("A10:G10").Resize(Rng.Rows.Count).ClearContents
        TT = 1
        For j = 1 To 3
            ViTri = UBound(DS(j), 1) \ SOLOP
            TTLoai = ViTri: aStep = ViTri
            If UBound(DS(j), 1) Mod SOLOP > i Then
                ViTri = i * (ViTri + 1) + 1
                TTLoai = TTLoai + 1
            Else
                ViTri = i * (ViTri + 1)
            End If
            Tach_DS = TachDS(DS(j), TTLoai, ViTri, TT)
            If IsArray(Tach_DS) Then
                sh.Range("A9:G10").Offset(TT).Resize(UBound(Tach_DS, 1)).Value = Tach_DS
                TT = TT + UBound(Tach_DS, 1)
            End If
        Next j
    Next i
End Sub
Còn vụ Nam Nữ thì đợi anh @bebo021999 giúp vậy.
Cảm ơn bác nhiều nhé, Code chạy quá OK.
Nếu như muốn chia 6 lớp thì sửa code sao bác?
 
Lần chỉnh sửa cuối:
Đúng rồi bạn, vẫn là 6 lớp
---
Nếu như muốn chia 6 lớp thì sửa code sao bác?
Bài 1 "thành 7 lớp mới", giờ biến thànhh 6 rồi.
---------
Bài 7 tưởng hỏi vô nghĩa (hỏi "số lớp vẫn không đổi đúng không?") trong khi bài 1 yêu cầu rõ là "7 lớp mới", té ra lại là câu tiên đoán đúng phóc.
 
Lần chỉnh sửa cuối:
Bài 1 "thành 7 lớp mới", giờ biến thànhh 6 rồi.
---------
Bài 7 tưởng hỏi vô nghĩa (hỏi "số lớp vẫn không đổi đúng không?") trong khi bài 1 yêu cầu rõ là "7 lớp mới", té ra lại là câu tiên đoán đúng phóc.
Thầy hay thợ đoán vậy?
 
Em đang tìm hiểu việc lấy số ngẫu nhiên không trùng lặp.
Khi vào xem dữ liệu để tham khảo, thì thấy trong danh sách có 6 lớp, mà chia lại 7 lớp nên thấy sai sai mới hỏi lại ạ.
 
. . . . .
Khi vào xem dữ liệu để tham khảo, thì thấy trong danh sách có 6 lớp, mà chia lại 7 lớp nên thấy sai sai mới hỏi lại ạ.
Sao bạn khẳng định chuyển 6 lớp 6 lên thành 7 lớp bảy lại là sai? Bạn có trong ngành này không vậy?
 
Sao bạn khẳng định chuyển 6 lớp 6 lên thành 7 lớp bảy lại là sai? Bạn có trong ngành này không vậy?
Em không làm ngành này ạ.
Theo quan điểm của em là số lớp sẽ không đổi thôi, Trường học thường có số lớp cố định ạ
 
Em không làm ngành này ạ.
Theo quan điểm của em là số lớp sẽ không đổi thôi, Trường học thường có số lớp cố định ạ
Không hẳn luôn cố định bạn. Tuỳ trường hợp do quy định mà nhà trường đó vẫn giữ nguyên số lớp (7->7), hoặc phải ép lớp (7->6) hoặc giãn lớp (6->7).
Trong yêu cầu mong muốn của mình là chia thành 7 lớp bảy mới, nhưng mình đã quên mất là lớp 6A1 mình đã bỏ ra ngoài danh sách trên rồi (vì lớp này giữ nguyên không trộn với các lớp khác) nên chỉ có từ 6A2-->6A7 thôi (6 lớp mới+6A1 là 7 lớp).
Mong các bác thông cảm vì sự cố nhầm lẫn này (Chắc do hậu Covid. Hihi).
 
BX mình là GV nên hiểu chuyện này.
Mỗi khối đều có lớp chọn, gọi là "gà".
Dùng để khi có đoàn kiểm tra cấp trên xuống dự giờ thì đem gà ra đá.
 
BX mình là GV nên hiểu chuyện này.
Mỗi khối đều có lớp chọn, gọi là "gà".
Dùng để khi có đoàn kiểm tra cấp trên xuống dự giờ thì đem gà ra đá.
Ở Việt Nam có thể đối phó kiểu đó chứ ở nơi khác thì khó. Vợ tôi cũng là giáo viên. Có 2 "cấp" kiểm tra: ban giám hiệu kiểm tra giáo viên bất kỳ, và thanh tra cấp trên kiểm tra lớp bất kỳ với giáo viên bất kỳ. Ban giám hiệu nhà trường đầu năm làm một danh sách cần kiểm tra những giáo viên nào trong năm học. Các giáo viên được gọi tên phải làm việc với ban giám hiệu và thống nhất ngày giờ dự lớp. Cấp nữa là đại diện của đơn vị giám sát (không là bộ phận của UBND mà là bộ phận của hệ thống giáo dục). Thanh tra có quyền chọn lớp bất kỳ. Vậy là không thể có gà được. Thanh tra mà vào đúng lớp có học sinh hư thì lộ ra hết bởi nhiều học sinh này cố tình "chứng tỏ mình" bằng cách "hư" khi thanh tra dự lớp: nói chuyện, nghịch di động, ném giấy, thậm chí đánh bạn. Những học sinh này tất nhiên sẽ nhận được điểm đánh giá trong "học bạ" kém, nhưng chả đứa nào ngại. Kiểu như phạm nhân ấy: càng nhiều "chiến tích" thì càng được các bạn tù nể phục và tôn là đại ca. :D
 
/(/hững chục năm gần đây ở VN hễ ngành nào có nghệ danh thì ngành đó hư đốn nhiều hơn những ngành khác mà thôi.
 
/(/hững chục năm gần đây ở VN hễ ngành nào có nghệ danh thì ngành đó hư đốn nhiều hơn những ngành khác mà thôi.
Khi một giáo viên tiếng Anh tuyên bố rằng "Ok" có thể chấp nhận là tiếng "Dạ" thì cả xã hội hư đốn chứ nói gì ngành giáo dục.

Lâu lâu chọc tức lão Xê-Tê chơi giải sầu :p
 
Khi một giáo viên tiếng Anh tuyên bố rằng "Ok" có thể chấp nhận là tiếng "Dạ" :p
Lâu lâu chọc tức lão Xê-Tê chơi giải sầu
Trong tiếng Anh, "Ok" dùng trong các câu sau:
- Check mail please, I've sent you an invitation to the "bê thui" party - Answer: OK, I will go (nghĩa đồng ý, nhận lời, ...)
- Are you OK? I didn't see you at work this morning? - Answer: No, I am not really OK, I've had a headache. (nghĩa ổn, khỏe, không có vấn đề gì)
- Does this dish taste well? - Answer: Yes, It's OK, I like it! (nghĩa được, đạt, ngon, dùng được)
- ...
Không có chữ OK nào dùng cho nghĩa "dạ" trong gọi dạ bảo vâng. Tôi dùng chữ "Yes" thay cho "dạ":
- Hey cheettit! - Answer: Yes?
Quay lại chuyện chính: Nếu 1 câu dùng xen lẫn từ tiếng Anh, từ viết tắt gọi tên tôi nói/ hỏi thì tôi sẽ phản ứng, hoặc hỏi chung GPE (trong đó có tôi) tôi cũng sẽ phản ứng. Còn trong bài trả lời bài người khác thì không. Đó là người khác chấp nhận, và tôi không xen vào.
 
Không biết chế độ "gà" của quý vị ra sao chứ hồi còn học Trung Học, tôi thích được đi "chọi nhau" bỏ bố.

Nhìn mấy thằng được huấn luyện thêm thèm nhỏ rãi. Hồi xưa không tách riêng, mà mỗi lớp tuyển ra mấy đứa được học chương trình đặc biệt. Đến giờ, thầy/cô chủ nhiệm lớp đặc biệt lớp đi từng lớp lùa bò về dạy 1 hoặc 2 tiết đặc biệt.

Lần đó được uyển vào lớp Văn, mừng hết lớn. Nhớ lời cô dạy môn hùng biện:
1. Mình đi tranh thì chú trọng vào thắng/thua sẽ bị hạn hẹp tầm nhìn. Phải đoán trước môi trường. Lúc đi thi phải biết quan sát và học hỏi. Chính việc kiểm chwngs những điều đáon trước sẽ tạo chiều sâu. Chính sự quan sát học hỏi kia sẽ mở rộng tầm mắt.
2. Phải nhìn sự thắng/thua theo thực tế: it nhất phải thắng 1 vài vòng đầu mới thực hiện được điều 1. Bị loại ngay vòng đầu thì còn học quái gì nữa.
 
Web KT
Back
Top Bottom