Xin hướng dẫn viết Macro để lọc dữ liệu từ sheet này và coppy sang sheet khác (1 người xem)

Liên hệ QC

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

truongtrungviet

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
9/10/07
Bài viết
53
Được thích
7
Nghề nghiệp
Giáo viên
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.
 

File đính kèm

Lần chỉnh sửa cuối:
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.
Thử dùng Sub này xem:
PHP:
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
 
Upvote 0
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("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
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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
Thử chỉnh lại như sau:

Mã:
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

Ví dụ với dữ liệu bài trên bạn lọc những học sinh có tên là 'Lai' thì làm như sau:
  1. Chạy code
  2. Gõ vào inputbox thứ nhất là số 3 (Vì tên Học sinh nằm ở cột thứ 3)
  3. Gõ vào inputbox thứ hai là Lai
Sau đó sẽ ra kết quả. Còn việc trích xuất dữ liệu ra workbook khác thì có rất nhiều cách, ví dụ: trích xuất ra file có định dạng sẵn, trích xuất kết quả ra 1 book mới riêng biệt... Bạn tự làm nhé.

Do bạn nói chung chung và không có dữ liệu mẫu nên tôi làm đại. Bạn tự chỉnh lại theo yêu cầu nhé.
 
Upvote 0
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
 
Upvote 0
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

Bạn ko nên gửi yêu cầu vào bài cũ mà nên mở chủ đề mới. Thân.
 
Upvote 0
nhờ hai lúa viết với trường hợp chỉ lọc tên thì cú pháp như thế nào? doạn code cho năm 2000 sửa như thế nào để lọc theo tên. cảm ơn.
 
Upvote 0

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

Back
Top Bottom