Code AutoFilter không copy được các trường chọn trong điều kiện lọc

Liên hệ QC

hoahuongduong1986

Thành viên thường trực
Tham gia
14/11/18
Bài viết
346
Được thích
40
Kính thưa anh chị,
Với File này, em chỉ muốn lấy dữ liệu các cột với điều kiện Code là AB001. Nhưng sao khi em lấy ra nó vấn lấy Full cột và thứ tự không như em muốn ạ.
DateCodeNameQuantity
AB001
 

File đính kèm

  • Code - advanced Filter.xlsb
    22.7 KB · Đọc: 11
Kính thưa anh chị,
Với File này, em chỉ muốn lấy dữ liệu các cột với điều kiện Code là AB001. Nhưng sao khi em lấy ra nó vấn lấy Full cột và thứ tự không như em muốn ạ.
DateCodeNameQuantity
AB001
Code chỉ làm nhiệm vụ bảo Excel phải Advanced Filter theo điều kiện đã cho. Excel đã làm đúng như đã bảo chứ làm sao sắp xếp lại các cột như của vùng điều kiện được
 
Upvote 0
Code chỉ làm nhiệm vụ bảo Excel phải Advanced Filter theo điều kiện đã cho. Excel đã làm đúng như đã bảo chứ làm sao sắp xếp lại các cột như của vùng điều kiện được
làm sao để nó lấy đúng thứ tự, số lượng cột và theo điều kiện này ạ
 
Upvote 0
làm sao để nó lấy đúng thứ tự, số lượng cột và theo điều kiện này ạ
Bạn chép đoạn code này vào VBE rồi chạy. Kết quả ghi ra ở I4 trở đi, đúng theo thứ tự các cột bạn chỉ định ở vùng điều kiện.
Rich (BB code):
Sub Filter()
Dim tmpArr, RslArr
Dim i As Long, EndR As Long, k As Long
Dim Crl As String

With Sheet1
    EndR = .Range("B" & Rows.Count).End(xlUp).Row
    tmpArr = .Range("A2:E" & EndR).Value
    Crl = .Range("J3")

    ReDim RslArr(1 To UBound(tmpArr, 1), 1 To 4)
    
    For i = 1 To UBound(tmpArr, 1)
        If tmpArr(i, 2) = Crl Then
            k = k + 1
            RslArr(k, 1) = tmpArr(i, 3)
            RslArr(k, 2) = tmpArr(i, 2)
            RslArr(k, 3) = tmpArr(i, 5)
            RslArr(k, 4) = tmpArr(i, 4)
        End If
    Next
    .Range("I4").Resize(k, 4).Value = RslArr
End With
End Sub
 
Upvote 0
Bạn chép đoạn code này vào VBE rồi chạy. Kết quả ghi ra ở I4 trở đi, đúng theo thứ tự các cột bạn chỉ định ở vùng điều kiện.
Rich (BB code):
Sub Filter()
Dim tmpArr, RslArr
Dim i As Long, EndR As Long, k As Long
Dim Crl As String

With Sheet1
    EndR = .Range("B" & Rows.Count).End(xlUp).Row
    tmpArr = .Range("A2:E" & EndR).Value
    Crl = .Range("J3")

    ReDim RslArr(1 To UBound(tmpArr, 1), 1 To 4)
   
    For i = 1 To UBound(tmpArr, 1)
        If tmpArr(i, 2) = Crl Then
            k = k + 1
            RslArr(k, 1) = tmpArr(i, 3)
            RslArr(k, 2) = tmpArr(i, 2)
            RslArr(k, 3) = tmpArr(i, 5)
            RslArr(k, 4) = tmpArr(i, 4)
        End If
    Next
    .Range("I4").Resize(k, 4).Value = RslArr
End With
End Sub
Xin cảm ơn anh đã chỉ dạy ạ !
 
Upvote 0

File đính kèm

  • Filter Du Lieu.xlsb
    20.7 KB · Đọc: 5
Upvote 0
Kính thưa anh chị,
Với File này, em chỉ muốn lấy dữ liệu các cột với điều kiện Code là AB001. Nhưng sao khi em lấy ra nó vấn lấy Full cột và thứ tự không như em muốn ạ.
Không thể dùng Advanced Filter được mà phải xử lý bằng VBA với mảng và vòng lặp
Code chỉ làm nhiệm vụ bảo Excel phải Advanced Filter theo điều kiện đã cho. Excel đã làm đúng như đã bảo chứ làm sao sắp xếp lại các cột như của vùng điều kiện được
Advanced filter làm được chuyện này. Code gốc bài 1 chỉ cần sửa 4 tiêu đề kết quả theo thứ tự, và sửa copy_rg = Sheet1.Range("O1:R1")
Tóm lại, muốn bao nhiêu cột, thứ tự nào, chỉ cần tạo sẵn các tiêu đề kết quả

1610593489245.png
PHP:
Sub loc_dieu_kien()
Dim rg As Range
Dim criterial_rg As Range
Dim copy_rg As Range

Set rg = Sheet1.Range("A1").CurrentRegion
Set criterial_rg = Sheet1.Range("I2:L3")
Set copy_rg = Sheet1.Range("O1:R1")

rg.AdvancedFilter xlFilterCopy, criterial_rg, copy_rg

End Sub
 
Upvote 0
Bạn chép đoạn code này vào VBE rồi chạy. Kết quả ghi ra ở I4 trở đi, đúng theo thứ tự các cột bạn chỉ định ở vùng điều kiện.
Code 2 bài trên không linh hoạt như advanced filter, vì advanced filter có thể cho nhiều điều kiện (cả 4 cột điều kiện) And Or với nhau, chỉ cần thay đổi điều kiện trong vùng điều kiện.
 
Upvote 0
Code 2 bài trên không linh hoạt như advanced filter, vì advanced filter có thể cho nhiều điều kiện (cả 4 cột điều kiện) And Or với nhau, chỉ cần thay đổi điều kiện trong vùng điều kiệ
Không cầu toàn bác ơi! Cứ từng bước mà xử lý. Nếu họ thấy vướng tất sẽ la lên, khi đó sẽ xử tiếp.
 
Upvote 0
Web KT

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

Back
Top Bottom