- Tham gia
- 9/10/07
- Bài viết
- 53
- Được thích
- 7
- Nghề nghiệp
- Giáo viên
Thử dùng Sub này xem:Mình có một bảng dữ liệu tương đối lớn. Đó là dò tìm những HS sinh năm 2000 có trong danh sách và coppy nó qua một sheet khác để tiện cho việc thống kê, mình muốn dùng VBA để lọc. Xin nhờ quí ACE giúp đỡ. Thanks.
Public Sub LOC2000()
Dim Rng(), Arr(), Tem As Long, Nam As Long, I As Long, J As Long, K As Long
Nam = 2000
With Sheet1
Rng = .Range(.[B8], .[B65000].End(xlUp)).Resize(, 26).Value
End With
ReDim Arr(1 To UBound(Rng, 1), 1 To 27)
For I = 1 To UBound(Rng, 1)
Tem = Rng(I, 4)
If Tem = Nam Then
K = K + 1: Arr(K, 1) = K
For J = 1 To 26
Arr(K, J + 1) = Rng(I, J)
Next J
End If
Next I
With Sheets("2000")
.[A4].Resize(10000, 27).ClearContents
.[A4].Resize(K, 27).Value = Arr
End With
End Sub
Sub Trich_HLMT()
Dim lsSQL As String, cnn As Object, lrs As Object, nYear As Long
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
nYear = Application.InputBox("Vui long nhap nam can trich loc.", "Nhap nam", , , , , , 1)
If nYear = 0 Then Exit Sub
With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
.Open
End With
lsSQL = "select * From [sheet1$A8:aa65000] where f5=" & nYear
lrs.Open lsSQL, cnn, 3, 1
With Sheet2
.[a5:aa65000].ClearContents
.[a5].CopyFromRecordset lrs
End With
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End Sub
Góp vui = ADO kết hợp điều kiện = inputbox.
Mã:Sub Trich_HLMT() Dim lsSQL As String, cnn As Object, lrs As Object, nYear As Long Set cnn = CreateObject(
Thử chỉnh lại như sau:Chào bác Hai Lúa Miền Tây,
Xin cho mình hỏi là nếu mình muốn tùy biến code trên thành 1 điều kiện lọc bất kỳ, ví dụ như lọc theo họ và tên, hay 1 nhóm thành tích (tốt, xấu) và chuyển dữ liệu sang 1 workbook mới thì phải làm thế nào ạ?
Mong bác chỉ bảo thêm.
Cám ơn bác rất nhiều
Sub Trich_HLMT()
Dim lsSQL As String, cnn As Object, lrs As Object, strDK As String, strHdr As Long
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
strHdr = Application.InputBox("Vui long nhap so cot can lam dieu kien loc trong vùng du lieu." & vbNewLine & _
" Vi du: 1,2,3...", "Nhap so cot", , , , , , 1)
If strHdr = 0 Then Exit Sub
strDK = Application.InputBox("Vui long nhap dieu kien can trich loc.", "Dieu kien can trich loc")
If Len(strDK) = 0 Then Exit Sub
With cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
.Open
End With
lsSQL = "select * From [sheet1$A8:aa65000] where f" & strHdr & " like '" & strDK & "'"
lrs.Open lsSQL, cnn, 3, 1
With Sheet2
.[a5:aa65000].ClearContents
.[a5].CopyFromRecordset lrs
End With
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End Sub
Chào bác Hai Lúa Miền Tây,
Anh "Hai Lúa Miền Tây" ơi, giúp em chút với.
e có file yêu cầu o sheet note, data o sheet Source.
E đã làm macro khi nhấn nút rồi nhưng báo lỗi, mới học làm macro nên không biết tại sao.
Nhờ a giúp với.
Cảm ơn anh.
http://www.mediafire.com/view/?ssb9ycuubpta9s9
Mong bác chỉ bảo thêm.
Cám ơn bác rất nhiều