


| AA | BBB | CCCC | XXXX | MMM | TTTT | QQQQ | Date1 | Date2 | TPD | TPG |
| 01A | abc | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 01B | xyz | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 17/02/2025 | KK | KK |
| 02A | kkx | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 02B | nnn | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 17/02/2025 | SHORE | BVS |
| 03a | hhh | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 03b | uuu | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 20/02/2025 | SHORE | BVS |
| 04a | ccc | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 20/02/2025 | BVS | SHORE |
| 04b | ggg | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 20/02/2025 | SHORE | BVS |
| 05a | hsg | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 05b | rrrr | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 17/02/2025 | SHORE | BVS |
| 06A | abc | 100.000.000,00 | EUR | VND | 23.800,00 | 119.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 06B | xyz | 100.000.000,00 | EUR | VND | 23.801,04 | -119.005.200.000 | 17/02/2021 | 21/02/2025 | SHORE | BVS |
| 07A | kkx | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 27/02/2025 | BVS | SHORE |
| 07B | nnn | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 25/02/2025 | SHORE | BVS |
| 08A | hhh | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 08B | uuu | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 17/02/2025 | SHORE | BVS |
| 09A | ccc | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 09B | ggg | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 17/02/2025 | SHORE | BVS |
| 10A | hsg | 100.000.000,00 | EUR | VND | 23.800,00 | 238.000.000.000 | 17/02/2021 | 17/02/2025 | BVS | SHORE |
| 10B | rrrr | 100.000.000,00 | EUR | VND | 23.801,04 | -238.010.400.000 | 17/02/2021 | 17/02/2025 | SHORE | BVS |
| 11 | xxxx | 100.000.000,00 | EUR | VND | 23.800,00 | 214.200.000.000 | 17/02/2021 | 17/02/2025 | KK | KK |
Cảm ơn bác nhiều lắm ạ
Với mẫu dưới đây,
Em muốn lọc 1: Các bản ghi thỏa mãn điều kiện cột Date2 là ngày 17/02/2025 và Cột TPG không phải là KK
Em muốn lọc 2: Các bản ghi thỏa mãn điều kiện cột Date2 là từ ngày 21/02/2025 trở đi và Cột TPG không phải là KK
Thì phải viết thế nào trong công thức autofilter ạ (kết quả lọc hiện dưới chỗ gõ hàm autofilter)







Em rất ngưỡng mộ code của bác ấy. Tuy nhiên thú thật không học được thêm gì vì em kém quá, gần như chả code nào em hiểu được. Nguyên việc chỉnh sửa để phù hợp với mình cũng quá khó rồi...Quả là code khủng. Nội việc làm sao điền tham số cho đúng thôi cũng đã phờ rồi.
Advanced filter của excel có sẵn làm được hết những việc ấy. Và cũng phải học 1 chút. Tuy vậy học cái có sẵn tiện lợi hơn ở chỗ qua máy nào cũng biết xài, cài đặt lại windows, office không phải cài thêm hoặc copy code thêm.Em rất ngưỡng mộ code của bác ấy. Tuy nhiên thú thật không học được thêm gì vì em kém quá, gần như chả code nào em hiểu được. Nguyên việc chỉnh sửa để phù hợp với mình cũng quá khó rồi...
Bài này của bạn tôi nghĩ là bài dùng công cụ Advanced Filter cơ bản.Cảm ơn bác nhiều lắm ạ
Với mẫu dưới đây,
Em muốn lọc 1: Các bản ghi thỏa mãn điều kiện cột Date2 là ngày 17/02/2025 và Cột TPG không phải là KK
Em muốn lọc 2: Các bản ghi thỏa mãn điều kiện cột Date2 là từ ngày 21/02/2025 trở đi và Cột TPG không phải là KK
Thì phải viết thế nào trong công thức autofilter ạ (kết quả lọc hiện dưới chỗ gõ hàm autofilter)
AA BBB CCCC XXXX MMM TTTT QQQQ Date1 Date2 TPD TPG 01A abc 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 01B xyz 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 17/02/2025 KK KK 02A kkx 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 02B nnn 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 17/02/2025 SHORE BVS 03a hhh 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 03b uuu 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 20/02/2025 SHORE BVS 04a ccc 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 20/02/2025 BVS SHORE 04b ggg 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 20/02/2025 SHORE BVS 05a hsg 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 05b rrrr 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 17/02/2025 SHORE BVS 06A abc 100.000.000,00EUR VND 23.800,00 119.000.000.000 17/02/2021 17/02/2025 BVS SHORE 06B xyz 100.000.000,00EUR VND 23.801,04 -119.005.200.000 17/02/2021 21/02/2025 SHORE BVS 07A kkx 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 27/02/2025 BVS SHORE 07B nnn 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 25/02/2025 SHORE BVS 08A hhh 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 08B uuu 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 17/02/2025 SHORE BVS 09A ccc 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 09B ggg 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 17/02/2025 SHORE BVS 10A hsg 100.000.000,00EUR VND 23.800,00 238.000.000.000 17/02/2021 17/02/2025 BVS SHORE 10B rrrr 100.000.000,00EUR VND 23.801,04 -238.010.400.000 17/02/2021 17/02/2025 SHORE BVS 11 xxxx 100.000.000,00EUR VND 23.800,00 214.200.000.000 17/02/2021 17/02/2025 KK KK



Em cảm ơn bác nhiều ạ!!!Bài này của bạn tôi nghĩ là bài dùng công cụ Advanced Filter cơ bản.
Cũng không nên quá phức tạp Hàm tự tạo làm chi, công cụ AF là cơ bản và quá mạnh mẽ rồi.
Các code trong Module là tôi chỉ Record macro, với các điều kiện lọc như bạn đưa ra.
Bạn xem File, kích vào nút Câu 1 hoặc Câu 2



Bác ơi, em muốn coppy kết quả lọc được vào 1 vị trí nào đấy của sheet khác thì viết thêm vào như thế nào ạBài này của bạn tôi nghĩ là bài dùng công cụ Advanced Filter cơ bản.
Cũng không nên quá phức tạp Hàm tự tạo làm chi, công cụ AF là cơ bản và quá mạnh mẽ rồi.
Các code trong Module là tôi chỉ Record macro, với các điều kiện lọc như bạn đưa ra.
Bạn xem File, kích vào nút Câu 1 hoặc Câu 2
Vậy thì tìm hiểu phần code sao chép rồi dán vào vị trí mới như bình thường thôi bạn.em muốn coppy kết quả lọc được vào 1 vị trí nào đấy của sheet khác



em đang muốn cái đấy nhưng loay hay chưa biết làm thế nào bácVậy thì tìm hiểu phần code sao chép rồi dán vào vị trí mới như bình thường thôi bạn.



Vâng, cảm ơn bác nhéVí dụ bạn muốn copy qua vùng B4:L4 của sheet2 (chiều ngang bằng với vùng O4:Y4 như code trong file) thì sửa chỗ này:
CopyToRange:=Range("O4:Y4")
thành:
CopyToRange:=Sheets("Sheet2").Range("B4:L4")
Copy như thế này là coppy cả ô trống ah bác, em chỉ muốn coppy phần kết quả lọc được thôi, vì copy cả ô trống thì nó đè lên dữ liệu phần bên dưới của sheet2 ạVí dụ bạn muốn copy qua vùng B4:L4 của sheet2 (chiều ngang bằng với vùng O4:Y4 như code trong file) thì sửa chỗ này:
CopyToRange:=Range("O4:Y4")
thành:
CopyToRange:=Sheets("Sheet2").Range("B4:L4")




Vậy thì giữ nguyên câu lệnh cũ, thêm dòng này vào bên dưới:Vâng, cảm ơn bác nhé
Bài đã được tự động gộp:
Copy như thế này là coppy cả ô trống ah bác, em chỉ muốn coppy phần kết quả lọc được thôi, vì copy cả ô trống thì nó đè lên dữ liệu phần bên dưới của sheet2 ạ
Sử dụng advance Filter với Name, thì có thể copy sang sheet khác bình thường, có thể tìm ngay trên GPE này chắc đã có bài đề cập.em đang muốn cái đấy nhưng loay hay chưa biết làm thế nào bác



bác sửa vào cái code này cho em được không ạ, em sửa vào kiểu gì nó cứ bị báo lỗi ạ. Cảm ơn bácVậy thì giữ nguyên câu lệnh cũ, thêm dòng này vào bên dưới:
Range("O4:Y" & Range("O" & Rows.Count).End(xlUp).Row).Copy Sheets("Sheet2").Range("B4")




Chắc bạn sai tên sheet rồi, chỗ Sheets("Sheet2").Range("B4") phải thay Sheet2 bằng tên sheet của bạn.bác sửa vào cái code này cho em được không ạ, em sửa vào kiểu gì nó cứ bị báo lỗi ạ. Cảm ơn bác
Sub TraLoi01()
Range("B4:L25").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"O1: P2"), CopyToRange:=Range("O4:Y4"), Unique:=False
End Sub
Sub TraLoi02()
Range("B4:L25").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"S1:T2"), CopyToRange:=Range("O4:Y4"), Unique:=False
End Sub



Vâng, Cảm ơn bác ạChắc bạn sai tên sheet rồi, chỗ Sheets("Sheet2").Range("B4") phải thay Sheet2 bằng tên sheet của bạn.
Tôi kèm file có chèn thêm sheet2 đây



Em ấn "Câu 2" không copy sang sheet 2 bác a hay là do chưa clear kết quả cũ bác nhỉ. Với lại em hỏi chút là định vị, vị trí paste sang sheets 2 (vẫn đầy đủ kết quả lọc ra) nếu không bắt đầu từ phải bắt đầu tư B4 của sheet 2 mà bắt đầu từ C5 của sheet thì sửa lại thế nào ạChắc bạn sai tên sheet rồi, chỗ Sheets("Sheet2").Range("B4") phải thay Sheet2 bằng tên sheet của bạn.
Tôi kèm file có chèn thêm sheet2 đây




1. Câu 2 có kết quả nhưng do chưa xóa kết quả câu 1 nên bị chìm trong đó.Em ấn "Câu 2" không copy sang sheet 2 bác a,. Với lại em hỏi chút là định vị, vị trí paste sang sheets 2 (vẫn đầy đủ kết quả lọc ra) nếu không bắt đầu từ phải bắt đầu tư B4 của sheet 2 mà bắt đầu từ C5 của sheet thì sửa lại thế nào ạ



Ý của em là xoá kết quả lần chạy trước bác ạ. Khi em sửa b4 thành c5 thì hình như nó cũng lấy từ sheet vùng c5, mà đúng ra phải lấy cả bảng lọc. Không hiểu em diễn tả thế rõ không ạ1. Câu 2 có kết quả nhưng do chưa xóa kết quả câu 1 nên bị chìm trong đó.
2. Muốn không chép sang B4 mà chép sang C5 thì sửa B4 thành C5
Bạn cho biết dữ liệu bên dưới chỗ dán kết quả là bắt đầu từ ô nào. Biết để xóa kết quả câu lọc trước cho khỏi lẫn với câu sau.




Bạn cố mà diễn tả cho rõ bạn muốn gì đi, cho thật mạch lạc.Ý của em là xoá kết quả lần chạy trước bác ạ. Khi em sửa b4 thành c5 thì hình như nó cũng lấy từ sheet vùng c5, mà đúng ra phải lấy cả bảng lọc. Không hiểu em diễn tả thế rõ không ạ



Tuyệt vời bác! Cảm ơn bác nhiều ạ! Cái hàm Favcopyto hình như nó xóa từ vị trị J10 đến hết bảng mới paste đúng không bác, vì em sử dụng 2 lần hàm favcopyto cho 2 kết quả là điều kiện 1 và điều kiện 2, để trên cùng 1 cột dọc ví dụ như lệnh 1 tại J10, lệnh thứ 2 lại J18, thì khi thực hiện lệnh 1 nó sẽ xóa mất kết quả của lệnh 2 bác ạ (mặc dù dữ liệu tại J10 của lệnh 1 chỉ đến J14 thôi chẳng hạn), em muốn lệnh 1 nó chỉ xóa kết quả của lệnh 1 trước đó (chứ không xóa đến cuối trang bảng tính, vô hình dùng xóa cả kết quả của lệnh 2) thì xử lý thế nào bác nhỉ?ngocleasing
Mã ở trên đã cập nhật bác có thể sao chép về sử dụng hàm FilterV
=FilterV(B4:L25,favCriterias(O1: P2),favCopyTo(O4))
Bác lưu Ý: AdvancedFilter khi nhập Vùng dữ liệu phải bao gồm phần Tiêu đề, Đầu đề và vùng điều kiện cũng vậy đầu đề phải tương ứng, vùng điều kiện giống như vùng dữ liệu rút gọn chỉ còn dữ liệu không trùng.

Vâng ạ, em diễn đạt như trên rõ không bácBạn cố mà diễn tả cho rõ bạn muốn gì đi, cho thật mạch lạc.
Chia nhỏ vấn đề ra, hết mỗi ý thì xuống dòng.
Nói như bạn tôi không hiểu gì cả.



vâng ạ, em cảm ơn bác nhiều ạ@ngocleasing
Bác chép lại mã, và sử dụng favCopyTo(J10: P14), favCopyTo(J18: P23)



@ngocleasing
Bác chép lại mã, và sử dụng favCopyTo(J10: P14), favCopyTo(J18: P23)



vâng anh, em cảm ơn nhé!@luong96
Bạn chỉ cần nhập favCopyTo(), đối số vùng ô phải là tiêu đề của các cột 1, 4, 5,7,8,9,10
Ví dụ kết quả CopyTo [A1:G1] thì Tiêu đề A đến G tương ứng với tiêu đề cột 1, 4, 5,7,8,9,10
Mã ở trên tôi cập nhật thêm 1 vấn đề khác, bạn chép mã mới





Xin lỗi. Mình làm được rồi ạ.Mình muốn thêm cột để autofilter thì làm sao ạ. Do file mình chỉ làm đến cột AN ạ.



Cho mình hỏi là mình làm nhiều điều kiện được không ạ. Do mình làm nhưng kết quả không ra ạ. Từ ngày đến ngày nhưng không ra kết quả ạ.@luong96 Bạn thử mã mới
Bạn dùng FilterV, cần tạo bảng lọc trước tiênCho mình hỏi là mình làm nhiều điều kiện được không ạ. Do mình làm nhưng kết quả không ra ạ. Từ ngày đến ngày nhưng không ra kết quả ạ.



Mình dùng FilterV, tạo bảng điều kiện ngày. Lọc từ ngày, tháng, năm đến ngày tháng năm không ra kết quả ạ. Ví dụ:Bạn dùng FilterV, cần tạo bảng lọc trước tiên



Nhờ bạn giúp mình với ạ!!Bảng là bạn tạo đúng, nhưng không có tệp ví dụ
Thử thêm >= và <= xem bạn nhé
bạn sửa ngày lại thành 2024-02-28Nhờ bạn giúp mình với ạ!!



Sửa ngày trong vùng điều kiện ạbạn sửa ngày lại thành 2024-02-28
Mình dò định dạng bằng ISTEXT với ISNUMBER thì sai định dạng nhau. Vùng điều kiện thì định dạng TEXT, còn vùng còn lại là định dạng số.bạn sửa ngày lại thành 2024-02-28
Theo tớ hiểu thì hàm phải sửa lại theo dạng:=FilterA(A1:C1000,iAnd(ftFid(1, "=20"), ftFid(2, "<>0"),iOR(ftFid(1,">=3", "<=1")))))
www.giaiphapexcel.com



Cảm ơn bạn nhiều nhé!!!!!Bạn nên hiểu chuyển đổi của bộ lọc định dạng không phải là ngày tháng đến năm vì cách ghi này chưa chắc 03/02/2024 là ngày 3 tháng 2 năm 2024, tùy vùng địa lý thì sẽ là ngày 2 tháng 3... chính vì vậy 28/02/2024 là cách nhập lỗi cho bộ lọc, nên chuyển đổi tiểu chuẩn của bộ lọc là 2024-02-28 hoặc là 2024/02/28 hoặc là 02/28/2024. Quốc tế họ tạo định dạng tiêu chuẩn cũng vậy, chỉ một vài quốc gia sử dụng định dạng từ ngày tháng đến năm.
Tôi đang nói về giá trị trong bộ lọc, không ai dám động đến nguồn dữ liệu bạn nhé. Nếu ai dám thì về cày ruộng cho lành.



Bạn nên hiểu chuyển đổi của bộ lọc định dạng không phải là ngày tháng đến năm vì cách ghi này chưa chắc 03/02/2024 là ngày 3 tháng 2 năm 2024, tùy vùng địa lý thì sẽ là ngày 2 tháng 3... chính vì vậy 28/02/2024 là cách nhập lỗi cho bộ lọc, nên chuyển đổi tiểu chuẩn của bộ lọc là 2024-02-28 hoặc là 2024/02/28 hoặc là 02/28/2024. Quốc tế họ tạo định dạng tiêu chuẩn cũng vậy, chỉ một vài quốc gia sử dụng định dạng từ ngày tháng đến năm.
Tôi đang nói về giá trị trong bộ lọc, không ai dám động đến nguồn dữ liệu bạn nhé. Nếu ai dám thì về cày ruộng cho lành.






Hàm autosort hoạt động như thế nào ạ. Sort dữ liệu tự động khi thay đổi dữ liệu được không ạbạn sửa ngày lại thành 2024-02-28