Lọc dữ liệu tương tự AdvancedFilter theo 1 số điều kiện

Liên hệ QC

MinhKhai

Giải pháp Ếc-xào
Tham gia
16/4/08
Bài viết
934
Được thích
568
Em có nhu cầu lọc dữ liệu sang sheet khác từ 1 sheet TongHop
Hiện tại em lọc bằng AdvancedFilter tuy nhiên không biết là do chưa biết dùng hay là hạn chế cố hữu của AdvancedFilter mà em muốn có dòng tổng cộng phía dưới nhưng không được. (Chạy AdvancedFilter là nó xóa)
Ngoài ra dùng Advanded Filter thì các tiêu đề sheet được lọc phải giống hệt tiêu đề sheet gốc, trong thực tế em muốn em có sự điều chỉnh 1 chút.
Nhờ các anh chị em trong diễn đàn cho 1 hoặc nhiều cách lọc khác sao cho đáp ứng yêu cầu em đã trình bày chi tiết trong file đính kèm.
Em xin cảm ơn
 

File đính kèm

  • Nhật trình T5.xlsb
    551.6 KB · Đọc: 22
Sao bạn không thử với ADO.
Bạn xem bài trong link bên dưới, trong demo tôi có lọc theo 3 điều kiện (muốn thêm bao nhiêu điều kiện cũng được). Bạn xem có phù hợp yêu cầu thì điều chỉnh theo dữ liệu của bạn.
Link: https://www.giaiphapexcel.com/diend...ối-adodb-connection.141551/page-2#post-911390
Mình vẫn chưa vận dụng được bạn ạ. Chỉ dẫn thêm giúp mình với
 
Upvote 0
Em có nhu cầu lọc dữ liệu sang sheet khác từ 1 sheet TongHop
Hiện tại em lọc bằng AdvancedFilter tuy nhiên không biết là do chưa biết dùng hay là hạn chế cố hữu của AdvancedFilter mà em muốn có dòng tổng cộng phía dưới nhưng không được. (Chạy AdvancedFilter là nó xóa)
Ngoài ra dùng Advanded Filter thì các tiêu đề sheet được lọc phải giống hệt tiêu đề sheet gốc, trong thực tế em muốn em có sự điều chỉnh 1 chút.
Nhờ các anh chị em trong diễn đàn cho 1 hoặc nhiều cách lọc khác sao cho đáp ứng yêu cầu em đã trình bày chi tiết trong file đính kèm.
Em xin cảm ơn
Tôi mở lên thì thấy báo file lỗi phải repair. Sau khi repair thì trong file thấy chỉ có dữ liệu, không có nội dung nào trình bày yêu cầu cả.
217443
Về các hạn chế mà bạn nói (tiêu đề phải giống và mất dòng tổng cộng) thì có thể khắc phục bằng cách sau khi dùng Advance Filter mới sửa tiêu đề và tạo dòng tổng cộng.
 
Upvote 0
Tôi mở lên thì thấy báo file lỗi phải repair. Sau khi repair thì trong file thấy chỉ có dữ liệu, không có nội dung nào trình bày yêu cầu cả.
View attachment 217443
Về các hạn chế mà bạn nói (tiêu đề phải giống và mất dòng tổng cộng) thì có thể khắc phục bằng cách sau khi dùng Advance Filter mới sửa tiêu đề và tạo dòng tổng cộng.
Em mở thử vẫn thấy bình thường (bằng cả máy khác), không có vấn đề gì.
Em dùng Chrome và Office 2016
Bác xem lại giúp nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Mình vẫn chưa vận dụng được bạn ạ. Chỉ dẫn thêm giúp mình với

Bạn xem file đính kèm.
Tôi không rành dùng mảng nên đổi qua dùng ADO để lọc nhiều điều kiện. Nói chung chưa rành code và các thủ thuật bên Excel lắm nên có mấy đoạn có vẻ hơi chuối về việc tính tổng ( có cách code gọn hơn nhưng chưa có thời gian tìm hiểu ) nhưng vẫn đáp ứng kết quả như yêu cầu.
Riêng về phần bạn muốn xuất ra 1 file Excel khác mà không bị dính mấy cái nút lệnh và các cell không mong muốn, tôi làm theo cách là xuất cái range dữ liệu sang 1 file Excel template (thiết kế theo yêu cầu) rồi Save As nó theo tên chi định.
Cách dùng ADO trong file này có liên quan đến khai báo cái name range của toàn bộ dữ lệu trong Sheet "NhatTrinh" nên tôi có tạo cái hàm để cập nhật tự động name range khi có thay đổi dòng trong sheet này.
 

File đính kèm

  • NhatTrinh.rar
    167.3 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem file đính kèm.
Tôi không rành dùng mảng nên đổi qua dùng ADO để lọc nhiều điều kiện. Nói chung chưa rành code và các thủ thuật bên Excel lắm nên có mấy đoạn có vẻ hơi chuối về việc tính tổng ( có cách code gọn hơn nhưng chưa có thời gian tìm hiểu ) nhưng vẫn đáp ứng kết quả như yêu cầu.
Riêng về phần bạn muốn xuất ra 1 file Excel khác mà không bị dính mấy cái nút lệnh và các cell không mong muốn, tôi làm theo cách là xuất cái range dữ liệu sang 1 file Excel template (thiết kế theo yêu cầu) rồi Save As nó theo tên chi định.
Cách dùng ADO trong file này có liên quan đến khai báo cái name range của toàn bộ dữ lệu trong Sheet "NhatTrinh" nên tôi có tạo cái hàm để cập nhật tự động name range khi có thay đổi dòng trong sheet này.
Cảm ơn bạn, cách của bạn có vẻ hơi dài dòng. Không biết có cách lọc nào khác không nhỉ ?
 
Upvote 0
Cảm ơn bạn, cách của bạn có vẻ hơi dài dòng. Không biết có cách lọc nào khác không nhỉ ?

:) Đối với lọc dữ liệu, dùng ADO recordset thì chỉ có vậy, không rút ngắn được bạn à. Thay vì bạn dùng các hàm AdvanceFilter thì nó cũng được viết giống vậy nhưng bằng ngôn ngữ khác để tối ưu hoá tốc độ và nó làm thành hàm nên áp dụng vô nó ngắn gọn hơn.
Tôi chỉ viết được tới đó thôi :) , các bạn khác hỗ trợ để học hỏi thêm nhé.
 
Upvote 0
:) Đối với lọc dữ liệu, dùng ADO recordset thì chỉ có vậy, không rút ngắn được bạn à. Thay vì bạn dùng các hàm AdvanceFilter thì nó cũng được viết giống vậy nhưng bằng ngôn ngữ khác để tối ưu hoá tốc độ và nó làm thành hàm nên áp dụng vô nó ngắn gọn hơn.
Tôi chỉ viết được tới đó thôi :) , các bạn khác hỗ trợ để học hỏi thêm nhé.
Nhìn code bạn bổ sung, có thể thấy bạn đã giành nhiều thời gian vào đây. Rất cảm ơn bạn
Cách export dữ liệu vào form của bạn rất hay, tuy nhiên ở đây trong trường hợp của mình thì không thể tạo form gọn ghẽ (kẻ những đường lưới cho vùng có dữ liệu, không có dòng trống...). Vì ta không rõ dữ liệu được Export dài ngắn ra sao sau mỗi lần lọc. Vậy mình nói nó dài dòng là vì sẽ phải thêm thao tác bằng tay.
Mình thấy có các lọc bằng vòng lặp gì đấy nhưng mình thực sự không rành về cái này cũng như VBA.
 
Upvote 0
Cách export dữ liệu vào form của bạn rất hay, tuy nhiên ở đây trong trường hợp của mình thì không thể tạo form gọn ghẽ (kẻ những đường lưới cho vùng có dữ liệu, không có dòng trống...). Vì ta không rõ dữ liệu được Export dài ngắn ra sao sau mỗi lần lọc. Vậy mình nói nó dài dòng là vì sẽ phải thêm thao tác bằng tay.
Mình thấy có các lọc bằng vòng lặp gì đấy nhưng mình thực sự không rành về cái này cũng như VBA.

Đúng là để định dạng bảng tính Excel bằng VBA thì tốn một đống code. Vì tôi chủ yếu làm ứng dụng trên Access mà Access thì rất dở cái khoản thiết kế report nên cũng thường xuất sang Excel hoặc Word template và phải tốn nhiều code cho việc định dạng như bạn nói: Border, merge, bold v.v..nhưng về mặt tốc độ thì cũng chấp nhận được :) .
Tôi nghĩ Excel có nhiều code xử lý định dạng, copy range hiệu quả mà khả năng chưa học hỏi tới thôi.
Về vòng lặp thì khi nào không còn cách khác thì dùng nó vì sẽ ảnh hưởng nhiều đến tốc độ xử lý.
 
Upvote 0
Em có nhu cầu lọc dữ liệu sang sheet khác từ 1 sheet TongHop
Hiện tại em lọc bằng AdvancedFilter tuy nhiên không biết là do chưa biết dùng hay là hạn chế cố hữu của AdvancedFilter mà em muốn có dòng tổng cộng phía dưới nhưng không được. (Chạy AdvancedFilter là nó xóa)
Ngoài ra dùng Advanded Filter thì các tiêu đề sheet được lọc phải giống hệt tiêu đề sheet gốc, trong thực tế em muốn em có sự điều chỉnh 1 chút.
Nhờ các anh chị em trong diễn đàn cho 1 hoặc nhiều cách lọc khác sao cho đáp ứng yêu cầu em đã trình bày chi tiết trong file đính kèm.
Em xin cảm ơn
Bước 1: Dùng cho sheet BKKH:
1/ Không dùng AF, tạo 1 dòng phụ cho bạn tự do nhập số cột muốn lọc sang sheet BKKH (dòng 14)
2/ Khi muốn kết xuất Excel, bạn chạy code Copy_Abc, dùng code của bạn xuất sheet "BKKH_2" ra Excel.
Bước 2: Tính sau
 

File đính kèm

  • Nhật trình T5 (1).xlsb
    589.1 KB · Đọc: 13
Upvote 0
Bước 1: Dùng cho sheet BKKH:
1/ Không dùng AF, tạo 1 dòng phụ cho bạn tự do nhập số cột muốn lọc sang sheet BKKH (dòng 14)
2/ Khi muốn kết xuất Excel, bạn chạy code Copy_Abc, dùng code của bạn xuất sheet "BKKH_2" ra Excel.
Bước 2: Tính sau
Cảm ơn bác @Ba Tê. Giải pháp của bác đã xử lý được vấn đề của em.
Đối với Bước 1, có vẻ cái điều kiện từ ngày đến ngày (vùng ô màu tím) khiến cho việc xử lý khó hơn phải không bác ?
Trong bước 2, nếu vấn đề tạo Hyperlink chưa có giải pháp, bác xử lý giúp riêng phần lọc nhé). Em dùng Advanced Filter cứ bị copy format từ sheet nguồn, thật là bực mình
Một lần nữa cảm ơn bác
 
Upvote 0
Tranh thử lúc bác 3T đang xỉn & ngủ chưa dậy:
 

File đính kèm

  • Filter.rar
    560.5 KB · Đọc: 11
Upvote 0
Cảm ơn bác @Ba Tê. Giải pháp của bác đã xử lý được vấn đề của em.
Đối với Bước 1, có vẻ cái điều kiện từ ngày đến ngày (vùng ô màu tím) khiến cho việc xử lý khó hơn phải không bác ?
Trong bước 2, nếu vấn đề tạo Hyperlink chưa có giải pháp, bác xử lý giúp riêng phần lọc nhé). Em dùng Advanced Filter cứ bị copy format từ sheet nguồn, thật là bực mình
Một lần nữa cảm ơn bác
Không làm chuyện Link, chỉ lấy dữ liệu khi thay đổi ô M1, M2.
Trong file có nhiều Sheets, nhiều Names, cái nào không cần thiết thì xóa đi, để nó chỉ làm nặng nề mỗi khi cập nhật dữ liệu.
 

File đính kèm

  • Nhật trình T5_v2.xlsb
    596.3 KB · Đọc: 11
Upvote 0
Tranh thử lúc bác 3T đang xỉn & ngủ chưa dậy:
Cảm ơn Trưởng lão của GPE. Xin phép được xưng là Bác - Em.
Qua file bác giúp, có thể thấy rõ sự vui tính, hài hước trong con người của bác. Chúc bác luôn mạnh khỏe và đảm trách tốt công việc "Giám đốc Trung tâm hội nghị quốc gia - khu vực phía Nam"
Bài đã được tự động gộp:

Không làm chuyện Link, chỉ lấy dữ liệu khi thay đổi ô M1, M2.
Trong file có nhiều Sheets, nhiều Names, cái nào không cần thiết thì xóa đi, để nó chỉ làm nặng nề mỗi khi cập nhật dữ liệu.
Cảm ơn bác @Ba Tê, bác rất chu đáo khi làm code tạo list cho Tên lái xe, dù chỉ ngắn đi vài dòng của list.
Việc tạo dòng phụ (dòng 7) rất thuận tiện để em có thể tạo những bảng lọc khác có cấu trúc tương tự.
Việc tạo nhiều Name là do 1 số cột em chưa Code hóa được nên phải dùng hàm. Name phục vụ cho hàm và 1 vài Validation
Bác cho em hỏi thêm là nếu điều kiện lọc không phải là Tên lái xe mà là Biển số xe (Mã xe) thì cần thay đổi chỗ nào của code cũ ạ ?
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Trưởng lão của GPE. Xin phép được xưng là Bác - Em.
Qua file bác giúp, có thể thấy rõ sự vui tính, hài hước trong con người của bác. Chúc bác luôn mạnh khỏe và đảm trách tốt công việc "Giám đốc Trung tâm hội nghị quốc gia - khu vực phía Nam"
Bài đã được tự động gộp:


Cảm ơn bác @Ba Tê, bác rất chu đáo khi làm code tạo list cho Tên lái xe, dù chỉ ngắn đi vài dòng của list.
Việc tạo dòng phụ (dòng 7) rất thuận tiện để em có thể tạo những bảng lọc khác có cấu trúc tương tự.
Việc tạo nhiều Name là do 1 số cột em chưa Code hóa được nên phải dùng hàm. Name phục vụ cho hàm và 1 vài Validation
Bác cho em hỏi thêm là nếu điều kiện lọc không phải là Tên lái xe mà là Biển số xe (Mã xe) thì cần thay đổi chỗ nào của code cũ ạ ?
Tên Lái xe: Ô M3 --->cột 5 sheet NhatTrinh
Trong code:
PHP:
Txt = .Range("M3").Value    '-------Gán Txt = ô M3'
    For I = 1 To R
        If sArr(I, 2) = Ngay Then
            If sArr(I, 5) = Txt Then ' ---Nếu Cột 5 = Tên Lái xe'
 
Upvote 0

File đính kèm

  • Copy of Nhật trình T5 (2).xlsm
    1.7 MB · Đọc: 10
Upvote 0
Tiếp sheet còn lại và thêm định dạng.
 

File đính kèm

  • Copy of Nhật trình T5 (2).xlsm
    1.7 MB · Đọc: 22
Upvote 0
Web KT
Back
Top Bottom