Nhờ lọc bỏ ra những điểm từ 5 trở lên để biết em nào còn thiếu điểm môn nào. (1 người xem)

  • Thread starter Thread starter vothuha
  • Ngày gửi Ngày gửi
Liên hệ QC

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

vothuha

Thành viên mới
Tham gia
4/12/09
Bài viết
2
Được thích
0
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.
 
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.
bài của BTNN
Chiêu 32: Thao tác trên dữ liệu với Advanced Filter
Nếu bạn đã quen với công cụ Auto Filter, bạn hẳn đã thấy những hạn chế của AutoFilter. Nếu bạn cần xử lý chọn lọc dữ liệu ngoài giới hạn này, Advanced Filter là 1 chọn lựa tốt.
Dù cho bị hạn chế, AutoFilter cũng đã là 1 công cụ hữu ích để chỉ thể hiện 1 phần dữ liệu lên màn hình theo 1 vài điều kiện nào đó. Nhưng đôi khi bạn không thể chọn lọc thông tin cần thiết khi dùng AutoFilter.

Xin nói thêm, Excel 2003 và kể cả Excel 2007 chỉ có thể lọc 1 lần 2 điều kiện (And hoặc Or) cho 1 cột. Hơn thế, nếu bạn muốn lọc dữ liệu theo 2 tiêu chí trên 2 cột, thì chỉ có thể kết hợp bằng toán tử And giữa các điều kiện của 2 cột.

Advanced Filter sẽ hữu dụng hơn nhiều. Tuy nhiên nếu bạn muốn dùng AdF, bạn phải sắp xếp dữ liệu đúng chuẩn như lời nói đầu (bài 1, 2, 3):

- chừa ít nhất 3 dòng trống trên cùng bảng dữ liệu
- Dùng 1 dòng duy nhất làm tiêu đề bảng dữ liệu
- Không merge bất cứ ô nào của bảng dữ liệu

Khi sử dụng AdF, bạn sẽ phải dùng tiêu đề cột làm tiêu chí lọc, nên bạn sẽ phải copy tiêu đề cột dán vào chỗ nào đó trên dòng 1. Nhưng tốt nhất bạn nên dùng 1 công thức chẳng hạn như =A4 để bảo đảm rằng bất cứ lúc nào điều kiện lọc cũng đúng, dù cho bạn có thay đổi tiêu đề cột.

Dùng công thức này cho tất cả các cột mà bạn muốn làm tiêu chí lọc.

Sau đó ngay dưới mỗi tiêu đề (dòng 2, và 3) bạn để những điều kiện lọc. Những điều kiện lọc sẽ dùng những toán tử so sánh như: =, >, <, >=, <=, <>.

Ghi nhớ 1 điều rằng những điều kiện Or cần sắp xếp theo chiều đứng, những điều kiện And sẽ sắp theo hàng ngang. Do đó nếu bạn cần lọc theo 2 điều kiện And và cùng 1 tiêu chí, thì phải dùng 1 tiêu đề cột trên 2 ô.


 
Em nhờ thầy giúp em làm thế nào để bỏ đi những điểm từ 5 trở lên trong cùng file đó thôi. Cám ơn thầy lắm.
Em định đưa một file nhỏ điển hình thôi, nhưng sao không được? Thầy chỉ giúp em xem.
 
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.
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:
Chú ý: có dùng Conditional Formatting...
 
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ông
Mình chỉ làm danh sách vài học sinh thôi nhé
Thân
 

File đính kèm

Tớ có cách này hơi thủ công nhưng tớ thấy được:
1. Sau mỗi cột điểm của mỗi môn chèn thêm 1 cột.
2. Trong cột vừa chèn, Bạn dùng hàm if: =IF(Q7<5,Q7,0) (đây là hàm cho Môn QP)
3. Kết quả là những môn có điểm dưới 5 sẽ chuyển thành "0".
4. Bạn chèn thêm 1 cột nữa sau ô vừa chèn.
5. Copy cột vừa làm hàm if --> fím phải vào cột vừa chèn--> Paste spacial --> Values --> OK.
6. Trong Cột đó dùng Find and replace. Tìm "0" và thay bằng không gì cả, thế là chỉ còn những điểm dưới 5, những điểm từ 5 trở lên biến mất.
 
Bạn xem ví dụ sau có thể dùng được không.
File đính kèm
 

File đính kèm

Thử cách này xem. Mình dùng VBA để xử lý.
(Nhấn Ctrl+Shift+L để lọc)
 

File đính kèm

Code cho bạn đây

Mã:
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
 
Trong cách làm của bạn Chipsandcrisps, ở bước 2 thay bằng hàm =if(Q7<5,Q7,"") có phải gọn hơn không? (khỏi phải lụy đến số 0)
 
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.
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)

Mình sẽ giúp bạn lọc ra trang 'Loc' nếu bạn có như cầu; Khi đó bạn hãy cung cấp tổng số học sinh của danh sách & các môn học đã được Ba Tê liệt kê đủ chưa?

Chờ tin bạn & xin gởi file đính kèm như là thêm một tham khảo!
PHP:
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
Mã:
[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]
 

File đính kèm

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
(Dữ liệu này mình Cốp của Ba Tê - Xin cảm ơn Ba Tê nha)
Bạn quá cẩn thận rồi. Cảm ơn.
Hình như chủ đề TKB của diễn đàn mà HYen17 là Phó ..., bấy lâu bị im hơi nhỉ?!
 
Vẫn trên trang đó được, chỉ việc ẩn & hiện

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.

Nút điều khiển tại [R5] --=0 :-= --=0

PHP:
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
 

File đính kèm

Web KT

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

Back
Top Bottom