Thống kê điểm thi theo môn (1 người xem)

  • Thread starter Thread starter 1050167
  • Ngày gửi Ngày gửi

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

1050167

Thành viên mới
Tham gia
16/6/15
Bài viết
29
Được thích
0
Mình muốn thống kê điểm thi môn lí ở tất cả các lớp theo loại kém, yếu, khá, trung bình và giỏi. Nhờ các bạn giúp đỡ.
 

File đính kèm

Bạn xem số liệu thống kê tại trang 'TH'
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Bạn xem lại dùm mình sao mình thấy số thống kê trang TH không khớp so với đếm thủ công.
 
Cảm ơn bạn nhiều, giừo đã đúng rồi. Bạn tính như thế nào cho mình học hỏi với.
 
Mình mới thay file khác;
Các em khối 10 không có môn sinh nên có điều chỉnh lần 2

Bạn tính như thế nào cho mình học hỏi với.
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [H2]) Is Nothing Then
    Dim Sh As Worksheet, Arr()
    Dim Col As Byte, SS As Byte, J As Byte, HL As Byte, Dm As Double
    Dim MH As String
    
    MH = Left(Target.Value, 2):                 Sheets("TH").Select
    Col = Switch(MH = "To", 5, MH = "Lí", 6, MH = "Ho", 7, MH = "Si", 8, MH = "T.", 9)
    [B5].CurrentRegion.Offset(1, 1).ClearContents
    For Each Sh In ThisWorkbook.Worksheets
        If IsNumeric(Left(Sh.Name, 2)) Then
            With [B99].End(xlUp).Offset(1)
                .Value = Sh.Name
                SS = Sh.[B99].End(xlUp).Row - 5
                .Offset(, 1).Value = SS
                Arr() = Sh.Cells(6, Col).Resize(SS).Value
                ReDim dArr(1 To 1, 1 To 5) As Long
                For J = 1 To UBound(Arr())
                    Dm = Arr(J, 1)
                    HL = Switch(Dm <= 3.5, 5, Dm <= 5, 4, Dm <= 6.5, 3, Dm <= 8, 2, Dm <= 10, 1)
                    dArr(1, HL) = dArr(1, HL) + 1
                Next J
                .Offset(, 2).Resize(, 5).Value = dArr()
            End With
        End If
    Next Sh
    [L1].Value = UCase$(Target.Value)
 End If
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình mới thay file khác;
Các em khối 10 không có môn sinh nên có điều chỉnh lần 2


PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [H2]) Is Nothing Then
    Dim Sh As Worksheet, Arr()
    Dim Col As Byte, SS As Byte, J As Byte, HL As Byte, Dm As Double
    Dim MH As String
    
    MH = Left(Target.Value, 2):                 Sheets("TH").Select
    Col = Switch(MH = "To", 5, MH = "Lí", 6, MH = "Ho", 7, MH = "Si", 8, MH = "T.", 9)
    [B5].CurrentRegion.Offset(1, 1).ClearContents
    For Each Sh In ThisWorkbook.Worksheets
        If IsNumeric(Left(Sh.Name, 2)) Then
            With [B99].End(xlUp).Offset(1)
                .Value = Sh.Name
                SS = Sh.[B99].End(xlUp).Row - 5
                .Offset(, 1).Value = SS
                Arr() = Sh.Cells(6, Col).Resize(SS).Value
                ReDim dArr(1 To 1, 1 To 5) As Long
                For J = 1 To UBound(Arr())
                    Dm = Arr(J, 1)
                    HL = Switch(Dm <= 3.5, 5, Dm <= 5, 4, Dm <= 6.5, 3, Dm <= 8, 2, Dm <= 10, 1)
                    dArr(1, HL) = dArr(1, HL) + 1
                Next J
                .Offset(, 2).Resize(, 5).Value = dArr()
            End With
        End If
    Next Sh
    [L1].Value = UCase$(Target.Value)
 End If
End Sub



Bạn HYen17 chỉ mình cách sử dụng code này với. Cái này mình không biết. Mình muốn dùng code này tính cho các bảng tính khác cùng nội dung như trên thì phải làm sao nhờ bạn giúp.
 
Bạn chỉ mình cách sử dụng code này với. Cái này mình không biết. Mình muốn dùng code này tính cho các bảng tính khác cùng nội dung như trên thì phải làm sao nhờ bạn giúp.

Muốn xài code cho các file khác thì trước tiên cần thiết kết các trang tính ghi điểm của các lớp như file đã dẫn.

(Vì môn sinh không có ở khối lớp 10; nên nếu được ta nên chuyển đổi giữa môn sinh & môn anh văn cho nhau. Chuyện này cũng fải chuyển đổi 1 vài câu lệnh trong code. Nhưng chắc với bạn sẽ là khó. nên lúc khác mình sẽ làm giúp, nếu cần.)
 

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

Back
Top Bottom