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
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
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 à!Đang rảnh nên làm cho bạn bằng hai cách, công thức và VBA.
[/CODE]
Bạn xem file:
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 à!
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.
Đ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
Và
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:
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.
Bạn xem file xem đúng ý chưa nhé.
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.
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.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.
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
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.