Tự động rút trích ra những học sinh thi lại

Liên hệ QC

quangtinit

Thành viên mới
Tham gia
24/5/08
Bài viết
32
Được thích
0
Chào các bạn, các bạn cho mình hỏi.
Mình có danh sách bảng điểm của học sinh, lúc thì 45 hs lúc thì 50 học sinh.Mình muốn tự động rút trích ra những học sinh thi lại thì mình phải làm sao.Trân trọng cảm ơn
 

File đính kèm

  • BANG DIEM.xls
    17.5 KB · Đọc: 12
Dạng trích lọc danh sách này nhiều như lá mùa thu trên diễn đàn. Bạn search xem sao?
 
Chào các bạn, các bạn cho mình hỏi.
Mình có danh sách bảng điểm của học sinh, lúc thì 45 hs lúc thì 50 học sinh.Mình muốn tự động rút trích ra những học sinh thi lại thì mình phải làm sao.Trân trọng cảm ơn

Đang rảnh nên làm cho bạn bằng hai cách, công thức và VBA.
Công thức:
Xem ở sheet Congthuc


VBA:
Mã:
Public Sub ThiLai()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, DK As String, Col As Long
DK = "THI*"
With Sheet1
    sArr = .Range(.[A4], .[A65000].End(xlUp)).Resize(, 6).Value
    Col = .[A3].End(xlToRight).Column
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To Col)
For I = 1 To UBound(sArr, 1)
    Tem = UCase(sArr(I, 6))
    If Tem Like DK Then
        K = K + 1: dArr(K, 1) = K
        For J = 2 To Col
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("VBA")
    .[A4].Resize(65000, Col).ClearContents
    If K Then .[A4].Resize(K, Col).Value = dArr
End With
End Sub

Bạn xem file:
 

File đính kèm

  • BANGDIEM23..rar
    15.1 KB · Đọc: 29
cô này dạo này chắc uống nhiều tăng lực quá, cẩn thận làm cho người ta tẩu quả nhập ma đó nghen, một lần ăn 1 món thôi, nuốt 2 thứ cùng lúc mắt nghẹn à!

Dạ, em cũng cố gắng học hành thôi mà. Đọc bài, tìm hiểu kiến thức trên GPE, rồi áp dụng với những câu hỏi trên GPE, và áp dụng vào công việc của mình.
Hic, em phải cảm ơn thầy dạy VBA cho em lắm, tuy em biết mình vẫn còn non và còn phải học hỏi nhiều, nhưng em sẽ cố gắng hơn, không chỉ là cách giải bài trên GPE mà là áp dụng vào thực tiễn, vào công việc của chính mình...

Phải cảm ơn GPE, các thành viên cùng những bài viết quý báu của mọi người đã cho em kiến thức bổ ích và GPE đã "tặng" em người thầy đáng mến, đáng kính!!!

Hic, tự nhiên anh nói làm em xúc động nên tuôn 1 tràng đó thấy chưa????
 
Lần chỉnh sửa cuối:
Cô chú ý về chọn cột nhé, excel 2003 có hơn 65.000 dòng nhưng 2007 lại có trên 1.000.000 dòng nên cần chú ý khi viết code.
 
Cảm ơn bạn nhiều. Bạn cho mình hỏi ở dạng VBA mình muốn thêm ký tên của giáo viên thì phải làm sao.
Quang ngãi, ngày tháng năm
Người lập TRƯỞNG TBM.
 
Cảm ơn bạn nhiều. Bạn cho mình hỏi ở dạng VBA mình muốn thêm ký tên của giáo viên thì phải làm sao.
Quang ngãi, ngày tháng năm
Người lập TRƯỞNG TBM.

Người lập: TRƯỞNG RỒI LẠI TBM
Thế là sao nhỉ:
TBM có phải là: Trưởng bộ môn không?

Nếu vậy thì chỉ cần:
Người lập:Trưởng bộ môn thôi chứ?
 
Đang rảnh nên làm cho bạn bằng hai cách, công thức và VBA.
Công thức:
Xem ở sheet Congthuc


VBA:
Mã:
Public Sub ThiLai()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, DK As String, Col As Long
DK = "THI*"
With Sheet1
    sArr = .Range(.[A4], .[A65000].End(xlUp)).Resize(, 6).Value
    Col = .[A3].End(xlToRight).Column
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To Col)
For I = 1 To UBound(sArr, 1)
    Tem = UCase(sArr(I, 6))
    If Tem Like DK Then
        K = K + 1: dArr(K, 1) = K
        For J = 2 To Col
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("VBA")
    .[A4].Resize(65000, Col).ClearContents
    If K Then .[A4].Resize(K, Col).Value = dArr
End With
End Sub

Bạn xem file:

Nếu như dữ liệu nguồn có những bạn không có số thứ tự nhưng thỏa điều kiện thì code trên loại ra.
 

File đính kèm

  • BANGDIEM4.rar
    197.8 KB · Đọc: 7
Vẫn chưa được khắc phục sArr = .Range(.[A4], .[A65000].End(xlUp)).Resize(, 6).Value, nếu STT phía dưới là trống thì coi như tèo.

Hihi, em cảm ơn anh. Em mới lò dò VBA nên chưa biết dự đoán hết các tình huống gây ra lỗi.

Nhưng em cũng nghiên "cíu" lại xem thế nào...

Em cảm ơn anh!
 
Vì lấy dòng có dữ liệu cuối cùng trong cột A nên bị lỗi khi những người cuối cùng không có STT. Vậy thì lấy dòng cuối cùng trong cột B (Họ Tên).

Chắc cột này không có dữ liệu mấy dòng cuối thì không lấy cũng được phải không?
Hay là không có họ tên mà Thi Lại vẫn lấy luôn và để họ tên trống???
Nếu không có họ tên mà cột ghi chú vẫn có chữ "thi lại" mà cũng lấy luôn thì dùng cột F.

Theo anh thì nên lấy cột nào làm chuẩn mới là không bị lỗi ạ?

Hic, làm lại thử coi.
 

File đính kèm

  • BANGDIEM5.rar
    202.4 KB · Đọc: 5
Vì lấy dòng có dữ liệu cuối cùng trong cột A nên bị lỗi khi những người cuối cùng không có STT. Vậy thì lấy dòng cuối cùng trong cột B (Họ Tên).

Chắc cột này không có dữ liệu mấy dòng cuối thì không lấy cũng được phải không?
Hay là không có họ tên mà Thi Lại vẫn lấy luôn và để họ tên trống???
Nếu không có họ tên mà cột ghi chú vẫn có chữ "thi lại" mà cũng lấy luôn thì dùng cột F.

Theo anh thì nên lấy cột nào làm chuẩn mới là không bị lỗi ạ?

Hic, làm lại thử coi.
Cột B với trường hợp này theo anh là chuẩn, còn str1 và str2 sao mình không cho nó thẳng vào code luôn, khỏi tham chiếu đến cell phụ chi cho rối.
 
Theo mình thì làm vầy cho nhẹ nhàng

PHP:
Sub exam()
Dim str1, str2
   str1 = [C65536].End(3).Value
   str2 = [D65536].End(3).Value
   Sheet1.[A3:F10000].AdvancedFilter 2, [k1:k2], [a3:f3]
   [C65536].End(3).Offset(2) = str1
   [C65536].End(3).Offset(1, 1) = str2
   [A3].CurrentRegion.Borders.Value = 1
   Range([A4], [B65536].End(3).Offset(, -1)) = [Row(a:a)]
End Sub
 

File đính kèm

  • BANGDIEM5.rar
    11.2 KB · Đọc: 13
Cảm ơn bạn nhiều. TRƯỞNG TBM (LÀ NGƯỜI QUẢN LÝ) CÒN MÌNH LÀ NGƯỜI LẬP.
 
Web KT

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

Back
Top Bottom