sử dụng VBA không dùng advanced để lọc dữ liệu

Liên hệ QC

caonguyen89

Thành viên mới
Tham gia
26/6/18
Bài viết
39
Được thích
4
Giới tính
Nam
Hi cả nhà

mình đang tìm hiểu VBA có 1 biểu này mong mọi người chỉ giúp
do dữ liệu gốc mình có thể bị thay đổi về số dữ liệu lên chức năng advanced sẽ khó kiểm soát
điều kiện chạy tương đương chức năng advanced lọc theo vùng điều kiện.

các bạn chỉ giúp mình code nhé
 

File đính kèm

  • sao chép dữ liệu.xlsx
    442.9 KB · Đọc: 13
Hi cả nhà

mình đang tìm hiểu VBA có 1 biểu này mong mọi người chỉ giúp
do dữ liệu gốc mình có thể bị thay đổi về số dữ liệu lên chức năng advanced sẽ khó kiểm soát
điều kiện chạy tương đương chức năng advanced lọc theo vùng điều kiện.

các bạn chỉ giúp mình code nhé
Bạn thử.
Mã:
Sub loc()
Dim arr, arr1, lr As Long, dk As String, a As Long, i As Long, j As Integer
With Sheet1
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     arr = .Range("B10:S" & lr).Value
     ReDim arr1(1 To UBound(arr), 1 To 5)
End With
With Sheets("copy to")
     dk = .Range("G4").Value
     For i = 1 To UBound(arr)
         If arr(i, 1) = dk Then
            a = a + 1
            For j = 1 To 4
               arr1(a, j) = arr(i, j)
            Next j
               arr1(a, 5) = arr(i, 18)
         End If
    Next i
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr > 3 Then .Range("A4:E" & lr).ClearContents
     If a Then .Range("A4:E4").Resize(a).Value = arr1
End With
End Sub
 
Bạn thử.
Mã:
Sub loc()
Dim arr, arr1, lr As Long, dk As String, a As Long, i As Long, j As Integer
With Sheet1
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     arr = .Range("B10:S" & lr).Value
     ReDim arr1(1 To UBound(arr), 1 To 5)
End With
With Sheets("copy to")
     dk = .Range("G4").Value
     For i = 1 To UBound(arr)
         If arr(i, 1) = dk Then
            a = a + 1
            For j = 1 To 4
               arr1(a, j) = arr(i, j)
            Next j
               arr1(a, 5) = arr(i, 18)
         End If
    Next i
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr > 3 Then .Range("A4:E" & lr).ClearContents
     If a Then .Range("A4:E4").Resize(a).Value = arr1
End With
End Sub
mình đã thử nhưng không thấy chạy code ??? hoặc code chạy không đúng.

cho mình hỏi là nếu điều kiện không phải chỉ là G4 mà là nhiều điều kiện ( nhiều mã sp hơn ) vì mình cần sử dụng cho nhiều sp cùng lúc

test lại giúp mình nhé

cám ơn
 
Hi cả nhà

mình đang tìm hiểu VBA có 1 biểu này mong mọi người chỉ giúp
do dữ liệu gốc mình có thể bị thay đổi về số dữ liệu lên chức năng advanced sẽ khó kiểm soát
điều kiện chạy tương đương chức năng advanced lọc theo vùng điều kiện.

các bạn chỉ giúp mình code nhé
Advanced là ngắn gọn nhất mà không dùng thì hơi phí.
 
mình đã thử nhưng không thấy chạy code ??? hoặc code chạy không đúng.

cho mình hỏi là nếu điều kiện không phải chỉ là G4 mà là nhiều điều kiện ( nhiều mã sp hơn ) vì mình cần sử dụng cho nhiều sp cùng lúc

test lại giúp mình nhé

cám ơn
Quái lạ chạy ngon mà.Nếu thêm điều kiện bạn cũng thêm vào cho hàm if đó.
 

File đính kèm

  • sao chép dữ liệu (1).xlsm
    454.8 KB · Đọc: 7
hi bạn. do dữ liệu của mình liên tục thay đổi nên dùng advanced có thể bị bỏ sót dữ liệu hoặc do dữ liệu trống có thể gây lỗi trong quá trình tìm kiếm
Có thễ bạn đang nguỵ biện thôi, chứ Advanced có thể xài trong VBA để lọc; cái iếu của nó là tốc độ chưa chắc bằng đưa vô mảng để lọc
& luôn lọc đúng 1 khi CSDL của bạn là chuẩn.
 
Có thễ bạn đang nguỵ biện thôi, chứ Advanced có thể xài trong VBA để lọc; cái iếu của nó là tốc độ chưa chắc bằng đưa vô mảng để lọc
& luôn lọc đúng 1 khi CSDL của bạn là chuẩn.
hi bạn

mình đã thử advanced để lọc, có gặp 1 số vấn đề. nên đang muốn thử bằng code xem có ưu điểm hơn không thêm nữa thao tác của mình là lặp đi lặp lại và thay điều kiện có thể để trống

nếu bạn có advanced xài trong VBA để chạy file này mong bạn chỉ giúp
 
Mình đã thử advanced để lọc, có gặp 1 số vấn đề. nên đang muốn thử bằng code xem có ưu điểm hơn không
(2) thêm nữa thao tác của mình là lặp đi lặp lại và thay điều kiện có thể để trống
(1) nếu bạn có advanced xài trong VBA để chạy file này mong bạn chỉ giúp
PHP:
Sub AdvancedFilter()
 Dim Rws As Long
 With Sheet1
    Rws = .[B9].CurrentRegion.Rows.Count
    .Range("A9:S" & Rws).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheet2.Range("G3:G4"), CopyToRange:=Sheet2.Range("A3:E3"), Unique:=False
 End With
End Sub

(2) Bạn có thể nêu cụ thể để cùng xử lý
 
PHP:
Sub AdvancedFilter()
Dim Rws As Long
With Sheet1
    Rws = .[B9].CurrentRegion.Rows.Count
    .Range("A9:S" & Rws).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheet2.Range("G3:G4"), CopyToRange:=Sheet2.Range("A3:E3"), Unique:=False
End With
End Sub

(2) Bạn có thể nêu cụ thể để cùng xử lý
cám ơn bạn

code này chỉ thực hiện việc lọc điều kiện tại 1 cell ( G4 )

mình cần code để lọc bất theo điều kiện tại các Cell G3:G

theo ít kiến thức ít ỏi của mình nếu dùng advanced mà điều kiện để trống sẽ gặp lỗi.

hiện tại mình đã dùng 1 số hàm để sao chép dữ liệu định dạng advanced về dạng cố định đến mình đang giả định là tạo 5000 dữ liệu và lọc trong vùng đó cho lên file rất nặng hoạt động chậm tuy là sử lý hết được yêu cầu.
 
Web KT

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

Back
Top Bottom