Dùng Find thay cho Advanced Filter (1 người xem)

  • Thread starter Thread starter quykh
  • Ngày gửi Ngày gửi

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

quykh

Chim non
Tham gia
7/9/11
Bài viết
381
Được thích
46
Giới tính
Nữ
Nghề nghiệp
Công Nhân
Em có đoạn code này, mong các AC dùng phương thức Find để tìm thay cho Advanced Filter(hoặc tối ưu cho em đoạn code):
Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range
Set Rng = Sheet2.[a4].CurrentRegion
If Not Intersect(Target, Sheet3.[B2:D2]) Is Nothing Then
Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet3.Range( _
"B1:D2"), CopyToRange:=Sheet3.Range("A4:I4"), unique:=False
End If
End Sub
 
Không có file thì sao làm đc bạn.
Thường thì các phương thức sẵn có như advance filter, pivot table, consolidate.. vẫn là tối ưu.
 
Upvote 0
Em có đoạn code này, mong các AC dùng phương thức Find để tìm thay cho Advanced Filter(hoặc tối ưu cho em đoạn code):

Mục đích của bạn là gì :?
Nếu để lọc dữ liệu theo một điều kiện cho trước thì advanced filter là sự lưa chọn hoàn hảo rồi, bạn còn muốn tối ưu thêm điểm gì nữa ?
 
Upvote 0
Mình bị lọc sai. Ví dụ như mình lọc theo đội chơi, gồm có đội 1 và đội 2. Nhưng khi gỏ vào bảng tính mình gỏ theo số La Mã (Đội I,Đội II) thì khi lọc Đội I sẽ ra luôn cả Đội II. Có AC chị đã chi cho mình cách làm biến"tam" và cũng có nói nếu dùng Find thì sẽ không có xảy ra như vậy, Nhưng mình gà về VBA, nên mong các AC giúp đỡ.
 
Upvote 0
Mình bị lọc sai. Ví dụ như mình lọc theo đội chơi, gồm có đội 1 và đội 2. Nhưng khi gỏ vào bảng tính mình gỏ theo số La Mã (Đội I,Đội II) thì khi lọc Đội I sẽ ra luôn cả Đội II. Có AC chị đã chi cho mình cách làm biến"tam" và cũng có nói nếu dùng Find thì sẽ không có xảy ra như vậy, Nhưng mình gà về VBA, nên mong các AC giúp đỡ.

mấy cái vụ này thấy hỏi hoài, advanced filter nó không có phân biệt I với II đâu
dùng advanced filter cũng được, nhưng phải sửa lải cái criteria
hoặc dùng vòng lặp
cho dể làm, bạn post cái file lên đi
 
Upvote 0
PHP:
If Not Intersect(Target, Sheet3.[B2:D2]) Is Nothing Then
Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheet3.Range( _
"B1:D2"), CopyToRange:=Sheet3.Range("A4:I4"), unique:=False 
End If

Mình bị lọc sai. Ví dụ như mình lọc theo đội chơi, gồm có đội 1 và đội 2. Nhưng khi gỏ vào bảng tính mình gỏ theo số La Mã (Đội I,Đội II) thì khi lọc Đội I sẽ ra luôn cả Đội II. Có AC chị đã chi cho mình cách làm biến"tam" và cũng có nói nếu dùng Find thì sẽ không có xảy ra như vậy, Nhưng mình gà về VBA, nên mong các AC giúp đỡ.

Trường hợp này là kí tự đại diện trong excel tài lanh nó hại bạn;
Bạn thay vì cần nhập "Doi I" để làm Criteria, thì bạn cần nhập là ="=" & "Doi I"
Lúc đó Excel mới hết lanh chanh & giúp bạn lọc đúng!
 
Upvote 0
Dạ em đưa file ví dụ lên mong các AC dùng phương thức Find để tim ah!!! Vì em muốn học hỏi vè Find.
 

File đính kèm

Upvote 0
Muốn FIND() thì có FIND(), nó đây:

Biếu bạn bóng dáng macro lọc luôn;

Bạn có thể xét thêm
 

File đính kèm

Upvote 0
Dạ em đưa file ví dụ lên mong các AC dùng phương thức Find để tim ah!!! Vì em muốn học hỏi vè Find.
Copy code này vào Sheet1 tham khảo xem sao:
[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G2]) Is Nothing Then
Dim Source(), DoiChoi()
Dim i As Long, k As Long
Source = Range([A1], [D65000].End(3)).Value
ReDim DoiChoi(1 To UBound(Source), 1 To 4)
For i = 1 To UBound(Source)
If Source(i, 1) = Target Then
k = k + 1
DoiChoi(k, 1) = Source(i, 1)
DoiChoi(k, 2) = Source(i, 2)
DoiChoi(k, 3) = Source(i, 3)
DoiChoi(k, 4) = Source(i, 4)
End If
Next
[F4].Resize(i-1, 4) = DoiChoi
End If
End Sub[/GPECODE]

P/S: dù sao thì AF vẫn là tối ưu hơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Thầy SA_DQ có thể chỉnh code không dùng nút "Run" mà dùng Sub WoorkSheet_Change được không Thầy??
Em cũng cám ơn Anh Cá ngừ F1, học hỏi thêm ở Anh.!!!
 
Upvote 0
Thầy SA_DQ có thể chỉnh code không dùng nút "Run" mà dùng Sub WoorkSheet_Change được không Thầy??
Em cũng cám ơn Anh Cá ngừ F1, học hỏi thêm ở Anh.!!!
Thì bạn thử copy code của thầy SA vào sự kiện worksheet change xem sao?
 
Upvote 0
Nếu em copy code của Thầy SA_DQ vào, thì bị lỗi Debug ngay dòng: Set Rng = [A1].Resize([B2].CurrentRegion.Rows.Count)
 
Upvote 0
Mình làm gộp chung macro sự kiện để nhập vô 1 trong 2 nơi đều ra kết quả đây
 

File đính kèm

Upvote 0
Bài của Thầy ChanhTQ là tìm luôn cả "Đội" "Xếp Hạng", ý của em là tìm "Đội" hoặc"Xếp Hạng" riêng biệt(Có thể tìm "Đội" không cũng được HOẶC "Xếp Hạng" không cũng được. Mong Thầy giúp đỡ!!!
 
Upvote 0
Thích thì chìu thôi!
Nên chọn ở [g1] trước, sau đó [I1]

--=0 --=0 --=0

Còn iêu cầu gì khác nữa không vậy?
 

File đính kèm

Upvote 0

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

Back
Top Bottom