Kiểm tra trùng môn học ở phòng học bộ môn trong TKB (1 người xem)

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

titanic20072007

Thành viên thường trực
Tham gia
10/7/07
Bài viết
217
Được thích
8
Nghề nghiệp
Giáo viên
Chào các Pro hôm nay mình có vấn đề không giải quyết được mong các Pro giúp đỡ. Cụ thể thế này:
Mình có TKB đã xếp bằng tay nhưng trong quá trình tinh chỉnh hay bị trùng các môn học ở phòng bộ môn (có danh sách). Mình nhờ các Pro viết hộ code để tự động tô nền (màu khác nhau cho các môn khác nhau) cho những môn học bị trùng trong tiết học nào đó trong TKB (vì trường mình yêu cầu các môn học có phòng bộ môn thì phải học trên phòng bộ môn). Mình có gửi tệp dữ liệu mong các Pro giúp. Xin cảm ơn.
 

File đính kèm

Lần chỉnh sửa cuối:
Gặp mấy chữ "Pro" sợ quá.
 
Upvote 0
Hì hì. Cảm ơn Ba Tê đã giúp mình và thêm cả chức năng kiểm tra GV nữa rất hay. Mình chạy thử thấy chính xác rồi. Nhưng nếu vì lý do nào đó mà không phải tất cả các lớp trong trường cùng được học môn đó ở phòng bộ môn mà chỉ có những lớp được chỉ định từ trước thì sửa lại code như thế nào? Bạn xem giúp mình với. Mình có bổ sung thêm bảng phân công học trên phòng bộ môn ở bên cạnh. Cảm ơn bạn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hì hì. Cảm ơn Ba Tê đã giúp mình và thêm cả chức năng kiểm tra GV nữa rất hay. Mình chạy thử thấy chính xác rồi. Nhưng nếu vì lý do nào đó mà không phải tất cả các lớp trong trường cùng được học môn đó ở phòng bộ môn mà chỉ có những lớp được chỉ định từ trước thì sửa lại code như thế nào? Bạn xem giúp mình với. Mình có bổ sung thêm bảng phân công học trên phòng bộ môn ở bên cạnh. Cảm ơn bạn.
Nếu nói rõ từ đầu có lẽ sẽ "động não" 1 lần là xong.
Bi giờ thì "vì lý do nào đó" hơi bị "oải".
Có lẽ sẽ có các thành viên khác hỗ trợ tiếp.
 
Upvote 0
Tình huống mới nảy sinh thôi. Trước thì các môn có phòng bộ môn thì đều học trên PBM nhưng năm nay có một số phòng bộ môn quá tải nên mới nghĩ ra là phải luân phiên cho học ở giai đoạn nào đó. Thực ra với code của bạn đã giúp mình kiểm soát tương đối các môn bị trùng PHBM rồi. Nếu được bạn giúp tiếp thì việc kiểm soát sẽ linh hoạt và chính xác hơn. Hi vọng khi nào có điều kiện bạn giúp mình tiếp nhé.
 
Upvote 0
Tình huống mới nảy sinh thôi. Trước thì các môn có phòng bộ môn thì đều học trên PBM nhưng năm nay có một số phòng bộ môn quá tải nên mới nghĩ ra là phải luân phiên cho học ở giai đoạn nào đó. Thực ra với code của bạn đã giúp mình kiểm soát tương đối các môn bị trùng PHBM rồi. Nếu được bạn giúp tiếp thì việc kiểm soát sẽ linh hoạt và chính xác hơn. Hi vọng khi nào có điều kiện bạn giúp mình tiếp nhé.
Thay cái cũ bằng cái này thử xem có đúng kết quả không?
PHP:
Public Sub KT_Mon()
Dim Dic As Object, I As Long, J As Long, Tem As String, Arr(), Mau As Long, tArr(), Num As Long
Set Dic = CreateObject("Scripting.Dictionary")
Arr = Range("AC4:AC" & Range("AC100").End(xlUp).Row).Resize(, 13).Value
Mau = 2
ReDim tArr(1 To UBound(Arr, 1), 1 To 3)
For I = 2 To UBound(Arr, 1)
    Tem = UCase(Arr(I, 1))
    If Not Dic.Exists(Tem) Then
        Dic.Add Tem, I
        tArr(I, 1) = Mau
    End If
    Mau = Mau + 2
    For J = 2 To 13
        If Arr(I, J) <> Empty Then
            Tem = UCase(Arr(I, 1) & Arr(1, J))
            If Not Dic.Exists(Tem) Then Dic.Add Tem, ""
        End If
    Next J
Next I
For I = 6 To 39
    For J = 1 To UBound(tArr, 1)
        tArr(J, 2) = 0
        tArr(J, 3) = 0
    Next J
    For J = 3 To 25 Step 2
        If Cells(I, J) <> Empty Then
            Tem = UCase(Cells(I, J))
            If Dic.Exists(Tem) And Dic.Exists(Tem & UCase(Cells(3, J))) Then
                Num = Dic.Item(Tem)
                If tArr(Num, 2) = 0 Then tArr(Num, 2) = J
                tArr(Num, 3) = tArr(Num, 3) + 1
                If tArr(Num, 3) > 1 Then
                    Cells(I, tArr(Num, 2)).Interior.ColorIndex = tArr(Num, 1)
                    Cells(I, J).Interior.ColorIndex = tArr(Num, 1)
                End If
            End If
        End If
    Next J
Next I
Set Dic = Nothing
End Sub
Chỉ từ 21 đến 23/9 là có tình huống mới nảy sinh.
Nếu nảy sinh thêm lớp, thêm phòng bộ môn ... chắc bạn tự chỉnh được phải không?
 
Lần chỉnh sửa cuối:
Upvote 0
Thay cái cũ bằng cái này thử xem có đúng kết quả không?
PHP:
Public Sub KT_Mon()
Dim Dic As Object, I As Long, J As Long, Tem As String, Arr(), Mau As Long, tArr(), Num As Long
Set Dic = CreateObject("Scripting.Dictionary")
Arr = Range("AC4:AC" & Range("AC100").End(xlUp).Row).Resize(, 13).Value
Mau = 2
ReDim tArr(1 To UBound(Arr, 1), 1 To 3)
For I = 2 To UBound(Arr, 1)
    Tem = UCase(Arr(I, 1))
    If Not Dic.Exists(Tem) Then
        Dic.Add Tem, I
        tArr(I, 1) = Mau
    End If
    Mau = Mau + 2
    For J = 2 To 13
        If Arr(I, J) <> Empty Then
            Tem = UCase(Arr(I, 1) & Arr(1, J))
            If Not Dic.Exists(Tem) Then Dic.Add Tem, ""
        End If
    Next J
Next I
For I = 6 To 39
    For J = 1 To UBound(tArr, 1)
        tArr(J, 2) = 0
        tArr(J, 3) = 0
    Next J
    For J = 3 To 25 Step 2
        If Cells(I, J) <> Empty Then
            Tem = UCase(Cells(I, J))
            If Dic.Exists(Tem) And Dic.Exists(Tem & UCase(Cells(3, J))) Then
                Num = Dic.Item(Tem)
                If tArr(Num, 2) = 0 Then tArr(Num, 2) = J
                tArr(Num, 3) = tArr(Num, 3) + 1
                If tArr(Num, 3) > 1 Then
                    Cells(I, tArr(Num, 2)).Interior.ColorIndex = tArr(Num, 1)
                    Cells(I, J).Interior.ColorIndex = tArr(Num, 1)
                End If
            End If
        End If
    Next J
Next I
Set Dic = Nothing
End Sub
Chỉ từ 21 đến 23/9 là có tình huống mới nảy sinh.
Nếu nảy sinh thêm lớp, thêm phòng bộ môn ... chắc bạn tự chỉnh được phải không?

Rất cảm ơn Ba tê đã giúp. Code lúc đầu chạy duy có môn Lý là chưa kiểm soát được song mình đã điều chỉnh giá trị ban đầu của biến I chạy từ 2 trong
ReDim tArr(1 To UBound(Arr, 1), 1 To 3)
For
I = 2 To UBound(Arr, 1)
Tem = UCase(Arr(I, 1))
xuống bắt đầu từ 1 và nhập thêm các phòng bộ môn tới 10 phòng và điều chỉnh các lớp thấy chạy rất nhanh và chính xác.
Đúng năm nay đầu năm học trường mình thay đổi chuyên môn nhiều nên mình phải thay đổi xếp lại TKB 4 lần rồi việc kiểm soát trùng GV, phòng bộ môn, trống từ 2 tiết trở lên,... nếu không có code rất hay sót. Chắc là tăng lớp thì không đâu quy mô trường mình chỉ vậy thôi. Phòng bộ môn 10 phòng là nhiều rồi.
Vừa xem hồ sơ biết Ba tê hơn 19 tuổi xin được gọi là chú nhé. Chú nhiều tuổi mà thạo lập trình như vậy bọn cháu phải theo dài. Trong công việc của cháu rất hay dùng bảng tính nhưng là thường làm công thức ít khi viết code (vì mới làm quen với nó) có gì rất mong chú giúp đỡ. Chúc chú sức khỏe đóng góp nhiều cho GPE. Cảm ơn chú.
 
Upvote 0

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

Back
Top Bottom