bài của BTNNTôi đang cần thông kê một số lượng lớn sổ điểm để lọc ra những em có điểm dưới 5 của môn học nào để báo cho lãnh đạo. Nhờ các thầy giúp đỡ. Cám ơn nhiều.
Tạm lọc ra những HS có môn học dưới 5 như sau, Bạn xem thử thế nào:Tôi đang cần thông kê một số lượng lớn sổ điểm để lọc ra những em có điểm dưới 5 của môn học nào để báo cho lãnh đạo. Nhờ các thầy giúp đỡ. Cám ơn nhiều.
Hình như bạn cần cái này, hổng biết đúng hôngTôi đang cần thông kê một số lượng lớn sổ điểm để lọc ra những em có điểm dưới 5 của môn học nào để báo cho lãnh đạo. Nhờ các thầy giúp đỡ. Cám ơn nhiều.
Sub diemkem()
On Error Resume Next
Dim rng, cll, rc, rngrw As Range
Sheets("DS").Copy after:=Sheets("DS")
With ActiveSheet
.Name = "loc"
Set rc = .[p65536].End(xlUp)
Set rng = .Range([e2], rc)
For Each cll In rng
If cll >= 5 Then cll.ClearContents
Next
For i = rc.Row To 2 Step -1
Set rngrw = .Range("e" & i, "p" & i)
If WorksheetFunction.Sum(rngrw) = 0 Then .Range("e" & i).EntireRow.Delete
Next
End With
End Sub
Nếu cần thống kê điểm của học sinh toàn trường thì bạn nên xài VBA;Tôi đang cần thông kê một số lượng lớn sổ điểm để lọc ra những em có điểm dưới 5 của môn học nào để báo cho lãnh đạo. Nhờ các thầy giúp đỡ. Cám ơn nhiều.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([S5], Target) Is Nothing Then
Dim Rng As Range, sRng As Range, Clls As Range
Dim Cot As Byte
Set Rng = Range([d6], [iv6].End(xlToLeft))
Rng.CurrentRegion.Interior.ColorIndex = 0
If Target.Value = "All" Then
Set Rng = Rng.CurrentRegion.Offset(, 2).SpecialCells(xlCellTypeConstants, 1)
Cot = Rng.Columns.Count
For Each sRng In Rng.Cells(1, 1).Resize(Rng.Rows.Count)
9 If Application.WorksheetFunction.Min(sRng.Resize(, Cot - 1)) < 5 Then
' For Each Clls In sRng.Resize(, Cot - 1)'
' If Clls.Value < 5 And Not IsNull(Clls.Value) Then'
Cells(sRng.Row, "B").Resize(, Cot + 3).Interior.ColorIndex = _
35 + (Day(Date) Mod 6)
' Clls.Interior.ColorIndex = 35 + (Day(Date) Mod 5)'
' Exit For'
End If
' Next Clls '
Next sRng
Else
Set sRng = Rng.Find(Target.Value)
XepTheoMon sRng
sRng.Interior.ColorIndex = 35 + sRng.Column Mod 6
sRng.Select
End If
End If
End Sub
[B]Sub XepTheoMon(Mon As Range)[/B]
Range("B6:P" & [B65500].End(xlUp).Row).Select
Selection.Sort Key1:=Mon, Order1:=xlAscending, Header:=xlYes, OrderCustom:=1[B]
End Sub[/B]
Nếu cần thống kê điểm của học sinh toàn trường thì bạn nên xài VBA;
Do bạn chưa đưa file lên, nên mình đưa ra 1 cách tô màu các em có điểm kém khi tại tại [S5] ta chọn "All"; Nếu bạn chọn 1 môn học nào đó, thì dữ liệu được xếp theo môn học đó;
(Dữ liệu này mình Cốp của Ba Tê - Xin cảm ơn Ba Tê nha)
------
Rất tuyệt, tuy không phải chủ đề của tôi, nhưng nếu chọn một môn nào đó thì chỉ hiện những HS có điểm của môn đó <5 thì hay hơn, các môn khác có thể có điểm (để tham khảo) hoặc không cần.
Nhưng như vậy chắc phải làm trên Sheet khác rồi.
To: HYen17
Bạn quá cẩn thận rồi. Cảm ơn.(Dữ liệu này mình Cốp của Ba Tê - Xin cảm ơn Ba Tê nha)
Hình như chủ đề TKB của diễn đàn mà HYen17 là Phó ..., bấy lâu bị im hơi nhỉ?!
Rất tuyệt, nhưng nếu chọn một môn nào đó thì chỉ hiện những HS có điểm của môn đó <5 thì hay hơn, các môn khác có thể có điểm (để tham khảo) hoặc không cần.
Nhưng như vậy chắc phải làm trên Sheet khác rồi.
Bạn quá cẩn thận rồi. Cảm ơn.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, sRng As Range, Clls As Range, hRng As Range
Dim Cot As Byte
Set Rng = Range([d6], [iv6].End(xlToLeft))
Rng.Interior.ColorIndex = 0
If Not Intersect([R5], Target) Is Nothing Then
Rng.CurrentRegion.EntireRow.Hidden = False
If Target.Value = "All" Then
Set Rng = Rng.CurrentRegion.Offset(, 2).SpecialCells(xlCellTypeConstants, 1)
Cot = Rng.Columns.Count
Rng.Cells(0).Offset(-1).Interior.ColorIndex = 35 + Day(Date) Mod 6
Set Rng = Rng.Cells(1, 1).Resize(Rng.Rows.Count)
Else
Set sRng = Rng.Find(Target.Value)
sRng.Interior.ColorIndex = 35 + sRng.Column Mod 6
Set Rng = sRng.Resize(Cells(65500, sRng.Column).End(xlUp).Row)
End If
Set Rng = Rng.Offset(1)
For Each sRng In Rng
If Cot = 0 Then
If sRng.Value >= 5 Then Set hRng = sRng
Else
If Application.WorksheetFunction.Min(sRng.Resize(, Cot - 1)) >= 5 Then
Set hRng = sRng
End If
End If
If Not hRng Is Nothing Then
If Clls Is Nothing Then
Set Clls = sRng
Else
Set Clls = Union(Clls, sRng)
End If
Set hRng = Nothing
End If
Next sRng
Clls.EntireRow.Hidden = True
'. . . . '
End If
End Sub