Thống kê và lọc ra số liệu

Liên hệ QC

letuongqt

Thành viên hoạt động
Tham gia
26/3/08
Bài viết
141
Được thích
24
Nhờ các anh giúp đỡ cho vấn đề sau : File EXCEL gồm 2 sheet , 1 ghi điểm số học sinh , 1 nhập phân công giáo viên và thống kê hiệu quả dạy của từng người theo (môn dạy) . Em muốn răng từ bảng phân công dạy , đối chiếu với sheet học sinh để thống kê kết quả của từng giáo viên . Em có dùng nhiều công thức trên diễn đàn để làm , vì hiểu biết ÊXCL còn quá hạn chế ,nên file làm xong chạy quá chậm (Em làm công tác tổng hợp : Bảng Dữ liệu học sinh 1200 em , Giáo viên khoảng 100 người ) . Xin nhờ các anh giúp đỡ , xin cảm ơn rất nhiều . Xin gởi kèm file .
 

File đính kèm

Nhờ các anh giúp đỡ cho vấn đề sau : File EXCEL gồm 2 sheet , 1 ghi điểm số học sinh , 1 nhập phân công giáo viên và thống kê hiệu quả dạy của từng người theo (môn dạy) . Em muốn răng từ bảng phân công dạy , đối chiếu với sheet học sinh để thống kê kết quả của từng giáo viên . Em có dùng nhiều công thức trên diễn đàn để làm , vì hiểu biết ÊXCL còn quá hạn chế ,nên file làm xong chạy quá chậm (Em làm công tác tổng hợp : Bảng Dữ liệu học sinh 1200 em , Giáo viên khoảng 100 người ) . Xin nhờ các anh giúp đỡ , xin cảm ơn rất nhiều . Xin gởi kèm file .
Tôi nghĩ bên sheet Hocsinh bạn phải tự xếp loại sẳn... có phải ai cũng làm ngành GD đâu mà biết cách xếp loại cho bạn
Trong file bạn ghi rằng:
Loại Giỏi : >=8
Loại Khá : >=6.5
Loại TB : >=5
Loại Yếu: >=3.5
Loại Kém: <3.5
Vậy >=8 nghĩa là cái gì?
- Là tất cả các môn >=8
- Là điểm đã chia TB >= 8
- Nếu chia TB thì tính nhu thế nào? ---> Tổng điểm/Tổng số môn hay có hệ số gì không?
vân vân và vân vân...
Vì lẽ đó, tôi nghĩ phần này bạn tự làm trước ---> Còn lại thì người ta chỉ thống kê giúp bạn thôi
 
Tôi nghĩ bên sheet Hocsinh bạn phải tự xếp loại sẳn... có phải ai cũng làm ngành GD đâu mà biết cách xếp loại cho bạn
Trong file bạn ghi rằng:

Vậy >=8 nghĩa là cái gì?
- Là tất cả các môn >=8
- Là điểm đã chia TB >= 8
- Nếu chia TB thì tính nhu thế nào? ---> Tổng điểm/Tổng số môn hay có hệ số gì không?
vân vân và vân vân...
Vì lẽ đó, tôi nghĩ phần này bạn tự làm trước ---> Còn lại thì người ta chỉ thống kê giúp bạn thôi
Cảm ơn anh ndu96081631 đã giúp tôi rất nhiều .Có thể do diến đạt không rõ . Loại Giỏi , Khá, ... riêng cho từng môn thôi anh ạ . Nghĩa là điểm tối đa là 10 , Giỏi >=8 ; Khá >=6.5 và <8 ;TB >=5 và <6.5 , Yếu >=3.5 và <5 , còn lại là kém .
Cúng có thể tiêu đề loại Giỏi , Khá, TB , Yếu, Kém thay băng mốc điểm như trên cũng được . Mục đích là để thống kê và cập nhật được số liệu . Xin anh giúp dùm , rất cảm ơn .
 
Bạn nói rõ thêm:Thống kê (giỏi, khá, TB, yếu, kém) là thống kê gì ? Có phải đếm số môn mà giáo viên đã dạy cho (tất cả học sinh) theo từng lớp, ứng với từng mức học lực ? Thử cho một vài ví dụ xem sao, mất công làm mà nhầm thì uổng lắm !
 
Cảm ơn anh ndu96081631 đã giúp tôi rất nhiều .Có thể do diến đạt không rõ . Loại Giỏi , Khá, ... riêng cho từng môn thôi anh ạ . Nghĩa là điểm tối đa là 10 , Giỏi >=8 ; Khá >=6.5 và <8 ;TB >=5 và <6.5 , Yếu >=3.5 và <5 , còn lại là kém .
Cúng có thể tiêu đề loại Giỏi , Khá, TB , Yếu, Kém thay băng mốc điểm như trên cũng được . Mục đích là để thống kê và cập nhật được số liệu . Xin anh giúp dùm , rất cảm ơn .
Gợi ý bạn 1 công thức:
- Giã sử tại sheet Giaovien, cột B đã được nhập (Ten GV)
- Cột D cũng đã được cập nhật môn dạy
---> Vậy tại cell E2, bạn thử gõ công thức này xem thế nào:
PHP:
=SUMPRODUCT((OFFSET(hocsinh!$C$3:$C$14,,MATCH($D3,hocsinh!$C$2:$P$2,0)-1)>=8)*(hocsinh!$A$3:$A$14=IF($N3:$R3="x",$N$2:$R$2)))
Ctrl + Shift + Enter rồi kéo fill xuống
Đây chỉ là gợi ý ban đâu, bạn hãy thêm vào phần tạo name động cho DS tự cập nhật nhé
 

File đính kèm

Bạn nói rõ thêm:Thống kê (giỏi, khá, TB, yếu, kém) là thống kê gì ? Có phải đếm số môn mà giáo viên đã dạy cho (tất cả học sinh) theo từng lớp, ứng với từng mức học lực ? Thử cho một vài ví dụ xem sao, mất công làm mà nhầm thì uổng lắm !

Tức là thống kê một giáo viên nào đó mà môn dạy (tương ứng) của chính họ có số lượng kết quả Giỏi , Khá, TB, Yếu , Kém ( Giỏi từ 8,0 trở lên , 6.5<=Khá<8 , 5<=TB<6.4 , 3.5<= Yếu<5, kém là trường hợp còn lại - Phần điểm này đối chiếu phía bên sheet hocsinh).

Gợi ý bạn 1 công thức:
- Giã sử tại sheet Giaovien, cột B đã được nhập (Ten GV)
- Cột D cũng đã được cập nhật môn dạy
---> Vậy tại cell E2, bạn thử gõ công thức này xem thế nào:
PHP:
=SUMPRODUCT((OFFSET(hocsinh!$C$3:$C$14,,MATCH($D3,hocsinh!$C$2:$P$2,0)-1)>=8)*(hocsinh!$A$3:$A$14=IF($N3:$R3=&quot;x&quot;,$N$2:$R$2)))
Ctrl + Shift + Enter rồi kéo fill xuống
Đây chỉ là gợi ý ban đâu, bạn hãy thêm vào phần tạo name động cho DS tự cập nhật nhé
Với bảng dữ liệu lớn (hocsinh hơn 1000 dòng , GV hơn 100 người) thì dùng name và SUMPRODUCT có bị ảnh hưởng nhiều đến tốc độ không ? ; Sao coppy công thức sang loại Khá , TB, Yếu ,... sửa lại mốc điểm tuwng ứng là 6.5 , 5 ,...bị value ? Xin cảm ơn và nhờ anh giải thích tiếp cho .
 
Chỉnh sửa lần cuối bởi điều hành viên:
Với bảng dữ liệu lớn (hocsinh hơn 1000 dòng , GV hơn 100 người) thì dùng name và SUMPRODUCT có bị ảnh hưởng nhiều đến tốc độ không ? ; Sao coppy công thức sang loại Khá , TB, Yếu ,... sửa lại mốc điểm tuwng ứng là 6.5 , 5 ,...bị value ? Xin cảm ơn và nhờ anh giải thích tiếp cho .
Cái này phải dùng tí xảo thuật
- Khi copy qua cột KHÁ, bạn sửa >=8 thành >=6.5
- Lấy công thức ấy trừ cho cell bên cột GIÕI ---> Tức đếm những người có điểm >= 6.5 rồi trừ bớt kết quả vừa có tại cột GIÕI
- Nhớ Ctrl + Shift + Enter nữa nhé
Làm cho bạn luôn đây!
--------------
Tôi nghĩ với 100 dòng công thức chắc không có vấn đề
----------------------------------
Xin lổi tôi nhầm chổ này
- Lấy công thức ấy trừ cho cell bên cột GIÕI ---> Tức đếm những người có điểm >= 6.5 rồi trừ bớt kết quả vừa có tại cột GIÕI
Chổ này thì đúng, nhưng copy qua cột TB vẩn sai!
Lý ra phải là:
Lấy KQ của công thức trừ đi TỔNG KQ trước đó
Đã sửa
 

File đính kèm

Lần chỉnh sửa cuối:
Cái này phải dùng tí xảo thuật
- Khi copy qua cột KHÁ, bạn sửa >=8 thành >=6.5
- Lấy công thức ấy trừ cho cell bên cột GIÕI ---> Tức đếm những người có điểm >= 6.5 rồi trừ bớt kết quả vừa có tại cột GIÕI
- Nhớ Ctrl + Shift + Enter nữa nhé
Làm cho bạn luôn đây!
--------------
Tôi nghĩ với 100 dòng công thức chắc không có vấn đề
----------------------------------
Xin lổi tôi nhầm chổ này
Chổ này thì đúng, nhưng copy qua cột TB vẩn sai!
Lý ra phải là:
Đã sửa
Sheet "hocsinh" có khoảng 1000 dòng không biết có hưởng nhiều lắm không anh ndu96081631 ? file trước tôi em cũng dùng SUPRODUCT nhưng chạy quá chậm - Phải ngồi đếm thời gian . Nếu còn có thể được nhờ anh tối ưu công thức dùm .Xin cảm ơn .
 
Sheet "hocsinh" có khoảng 1000 dòng không biết có hưởng nhiều lắm không anh ndu96081631 ? file trước tôi em cũng dùng SUPRODUCT nhưng chạy quá chậm - Phải ngồi đếm thời gian . Nếu còn có thể được nhờ anh tối ưu công thức dùm .Xin cảm ơn .
Với dử liệu cở đó thì file này dung lượng cũng không lớn lắm!
Bạn nén lại rồi gữi toàn bộ lên diển đàn xem thử
(nhiều khi có cao thủ nào đó nghĩ ra được chiêu VBA thì càng tốt)
 
Nhờ các anh giúp đỡ cho vấn đề sau : File EXCEL gồm 2 sheet , 1 ghi điểm số học sinh , 1 nhập phân công giáo viên và thống kê hiệu quả dạy của từng người theo (môn dạy) . Em muốn răng từ bảng phân công dạy , đối chiếu với sheet học sinh để thống kê kết quả của từng giáo viên . Em có dùng nhiều công thức trên diễn đàn để làm , vì hiểu biết ÊXCL còn quá hạn chế ,nên file làm xong chạy quá chậm (Em làm công tác tổng hợp : Bảng Dữ liệu học sinh 1200 em , Giáo viên khoảng 100 người ) . Xin nhờ các anh giúp đỡ , xin cảm ơn rất nhiều . Xin gởi kèm file .

Bạn kiểm tra lại:
  1. Số liệu xem đúng không?
  2. Với dữ liệu nhiều hơn chút xem tốc độ thế nào
 

File đính kèm

Bạn kiểm tra lại:
  1. Số liệu xem đúng không?
  2. Với dữ liệu nhiều hơn chút xem tốc độ thế nào
Boyxin dạo này xem ra là chuyên gia về VBA rồi nhỉ?
Sao Boyxin không gộp LỚP lại (ví dụ: a1, a2...) ---> Mới đúng ý tác giả chứ (nhoáng tí nữa là ra ngay mà)
 
Boyxin dạo này xem ra là chuyên gia về VBA rồi nhỉ?
Sao Boyxin không gộp LỚP lại (ví dụ: a1, a2...) ---> Mới đúng ý tác giả chứ (nhoáng tí nữa là ra ngay mà)

Hic, thống kê chi tiết còn được ....

Nếu thích gộp thì để tác giả nhúng tay chút xíu cho thêm phần thú vị
 
Nhờ các anh giúp đỡ cho vấn đề sau : File EXCEL gồm 2 sheet , 1 ghi điểm số học sinh , 1 nhập phân công giáo viên và thống kê hiệu quả dạy của từng người theo (môn dạy) . Em muốn răng từ bảng phân công dạy , đối chiếu với sheet học sinh để thống kê kết quả của từng giáo viên . Em có dùng nhiều công thức trên diễn đàn để làm , vì hiểu biết ÊXCL còn quá hạn chế ,nên file làm xong chạy quá chậm (Em làm công tác tổng hợp : Bảng Dữ liệu học sinh 1200 em , Giáo viên khoảng 100 người ) . Xin nhờ các anh giúp đỡ , xin cảm ơn rất nhiều . Xin gởi kèm file .
Một cách khác (đã gộp lớp)

Khi áp dụng:

  1. Tùy theo file cụ thể nên chế thêm phần code tự lấy thông số cho (iGV = 9: iLop = 5: iMon = 14: iHS = 12)
  2. Code sẽ báo lỗi khi môn học ở phần thống kê (Bảng B2) và ở Sheets("hocsinh") không đồng nhất
PHP:
Sub GPE_boyxin()
iGV = 9: iLop = 5: iMon = 14: iHS = 12
'-----------------------------------------------------
With Application
    .ScreenUpdating = False: .Calculation = xlCalculationManual
[a3].CurrentRegion.Offset(2).Resize(, 9).ClearContents
[b3].Resize(iGV) = [l3].Resize(iGV).Value
[d3].Resize(iGV) = [m3].Resize(iGV).Value
Tmp = [a3].Resize(iGV, 9)
For i = 1 To iGV
    xLop = "": Tmp(i, 1) = i
    G = 0: K = 0: TB = 0: Y = 0: Kem = 0
    For j = 1 To iLop
        If [m2].Offset(i, j) <> blank Then
            xLop = xLop & [m2].Offset(, j) & ", "
            ic = .Match([m2].Offset(i), Sheet1.[c2].Resize(, iMon), 0)
            For Each iclls In Sheet1.[a3].Resize(iHS)
                If iclls = [m2].Offset(, j).Value Then
                    With Sheet1.Cells(iclls.Row, ic + 2)
                        If .Value >= 8 Then G = G + 1
                        If .Value >= 6.5 And .Value < 8 Then K = K + 1
                        If .Value >= 5 And .Value < 6.5 Then TB = TB + 1
                        If .Value >= 3.5 And .Value < 5 Then Y = Y + 1
                        If .Value < 3.5 Then Kem = Kem + 1
                    End With
    End If: Next: End If: Next
    Tmp(i, 3) = Left(xLop, Len(xLop) - 2)
    Tmp(i, 5) = G: Tmp(i, 6) = K: Tmp(i, 7) = TB: Tmp(i, 8) = Y: Tmp(i, 9) = Kem
Next: [a3].Resize(iGV, 9) = Tmp
    .ScreenUpdating = True: .Calculation = xlCalculationAutomatic
End With
End Sub
 
Web KT

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

Back
Top Bottom