xuananh712
Thành viên mới
- Tham gia
- 30/3/21
- Bài viết
- 12
- Được thích
- 3
Xin chào các tiền bối Excel,
Mình là newbee trong món VBA này nên hi vọng được mọi người trợ giúp.
Bài toán của mình thế này
1) Mình có 1 work book gồm 1 sheet tổng hợp (đặt tên là Query) và nhiều sheet dữ liệu
2) Yêu cầu bài toán là khi nhập vào 1 keyword, Excel sẽ tìm kiếm trong 3 cột đầu tiên của từng sheet dữ liệu và trả vể tất cả các dòng mà 1 trong 3 cell đầu tiên chứa keyword đó.
Hiện trạng:
1) Mình sử dụng array fomula trong excel đã giải quyết được bài toán này nhưng vẫn có một số hạn chế nên muốn tìm giải pháp VBA để thay thế
Sau đây là file đính kèm của mình. Xin phép chú thích ngắn gọn như sau:
1) Trong sheet Query, nhập keyword "soil" vào ô B1, ấn Enter. Excel sẽ tìm trong 3 cột đầu của từng sheet dữ liệu và trả về tất cả các dòng mà 1 trong 3 cell đầu tiên có chứa text "soil" (có thể chứa kí tự viết hoa hoặc không, ví dụ "Soil", "SOIL",v.v vẫn thỏa mãn điều kiện). Trong cột Description, chọn (Select All) rồi lọc hết các giá trị rỗng (giá trị "-"). Vậy là đã hoàn thành yêu cầu
2) Nếu muốn tìm kiếm keyword khác, ví dụ "pile" chẳng hạn thì sẽ làm tương tự. Trong sheet Query, nhập keyword "pile" vào ô B1, ấn Enter. Excel sẽ tìm trong 3 cột đầu của từng sheet dữ liệu và trả về tất cả các dòng mà 1 trong 3 cell đầu tiên có chứa text "pile" (có thể có kí tự viết hoa hoặc không, ví dụ "Pile", "PILE",v.v vẫn thỏa mãn điều kiện). Trong cột Description, chọn (Select All) rồi lọc hết các giá trị rỗng (giá trị "-"). Vậy là đã hoàn thành yêu cầu.
Mình đang tìm cách chuyển từ sử dụng hàm mảng sang VBA, mong được trợ giúp.
P/S: Mình nghĩ đến 1 giải pháp nhưng loay hoay chưa biết code thế nào. Mọi người có thể tham khảo ý tưởng hoặc sử dụng cách khác cũng được.
1) Join 3 cột lại và sử dụng Range.Autofilter cho Sheet dữ liệu thứ nhất. Xong copy những dòng thỏa mãn điều kiện filter sang Sheet Query
2) Sau khi copy xong dữ liệu của Sheet dữ liệu thứ nhất, xuống dòng, tô xám và điền một loạt Text "To be shown" (Step này mục đích là để phân chia dữ liệu của các sheet khác nhau)
3) Tiếp tục bước 1 và bước 2 cho đến hết các Sheet dữ liệu
Xin cảm ơn đã trợ giúp.
Mình là newbee trong món VBA này nên hi vọng được mọi người trợ giúp.
Bài toán của mình thế này
1) Mình có 1 work book gồm 1 sheet tổng hợp (đặt tên là Query) và nhiều sheet dữ liệu
2) Yêu cầu bài toán là khi nhập vào 1 keyword, Excel sẽ tìm kiếm trong 3 cột đầu tiên của từng sheet dữ liệu và trả vể tất cả các dòng mà 1 trong 3 cell đầu tiên chứa keyword đó.
Hiện trạng:
1) Mình sử dụng array fomula trong excel đã giải quyết được bài toán này nhưng vẫn có một số hạn chế nên muốn tìm giải pháp VBA để thay thế
Sau đây là file đính kèm của mình. Xin phép chú thích ngắn gọn như sau:
1) Trong sheet Query, nhập keyword "soil" vào ô B1, ấn Enter. Excel sẽ tìm trong 3 cột đầu của từng sheet dữ liệu và trả về tất cả các dòng mà 1 trong 3 cell đầu tiên có chứa text "soil" (có thể chứa kí tự viết hoa hoặc không, ví dụ "Soil", "SOIL",v.v vẫn thỏa mãn điều kiện). Trong cột Description, chọn (Select All) rồi lọc hết các giá trị rỗng (giá trị "-"). Vậy là đã hoàn thành yêu cầu
2) Nếu muốn tìm kiếm keyword khác, ví dụ "pile" chẳng hạn thì sẽ làm tương tự. Trong sheet Query, nhập keyword "pile" vào ô B1, ấn Enter. Excel sẽ tìm trong 3 cột đầu của từng sheet dữ liệu và trả về tất cả các dòng mà 1 trong 3 cell đầu tiên có chứa text "pile" (có thể có kí tự viết hoa hoặc không, ví dụ "Pile", "PILE",v.v vẫn thỏa mãn điều kiện). Trong cột Description, chọn (Select All) rồi lọc hết các giá trị rỗng (giá trị "-"). Vậy là đã hoàn thành yêu cầu.
Mình đang tìm cách chuyển từ sử dụng hàm mảng sang VBA, mong được trợ giúp.
P/S: Mình nghĩ đến 1 giải pháp nhưng loay hoay chưa biết code thế nào. Mọi người có thể tham khảo ý tưởng hoặc sử dụng cách khác cũng được.
1) Join 3 cột lại và sử dụng Range.Autofilter cho Sheet dữ liệu thứ nhất. Xong copy những dòng thỏa mãn điều kiện filter sang Sheet Query
2) Sau khi copy xong dữ liệu của Sheet dữ liệu thứ nhất, xuống dòng, tô xám và điền một loạt Text "To be shown" (Step này mục đích là để phân chia dữ liệu của các sheet khác nhau)
3) Tiếp tục bước 1 và bước 2 cho đến hết các Sheet dữ liệu
Xin cảm ơn đã trợ giúp.
File đính kèm
Lần chỉnh sửa cuối: