Tìm 1 đoạn text trong nhiều sheet và trả về tất cả các kết quả trùng sang sheet mới

Liên hệ QC

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.
 

File đính kèm

  • Test.xlsm
    1.6 MB · Đọc: 8
Lần chỉnh sửa cuối:
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.
Dòng 5 sheet Query là STT (số thứ tự) cột được lấy từ sheets khác, không được xóa.
Thay đổi ô C1 là code chạy.
 

File đính kèm

  • Test.rar
    497.7 KB · Đọc: 22
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bác @Ba Tê . E đang xem code, có zì e xin phép được hỏi thêm ah. Cố gắng trên tinh thần: tự học, tự tìm hiểu trước, ko được mới hỏi.
Trân trọng
 
Upvote 0
Cảm ơn bác @Ba Tê . E đang xem code, có zì e xin phép được hỏi thêm ah. Cố gắng trên tinh thần: tự học, tự tìm hiểu trước, ko được mới hỏi.
Trân trọng
Xin cố gắng Không viết tắt "ko, e, ...", không "xí muội zì, ah ..." dò tự điển tiếng Việt và VBA đều không có.
 
Upvote 0
Xin cảm ơn bác @Ba Tê , sau khi nhận được Code của bác đã ngồi nghiền ngẫm cái Code này và viết chú thích ra như sau. Coi như mình đóng góp chút ít cho 4r GPE
To whom may concern, anh em nào muốn hiểu rõ hơn đoạn code của bên trên có thể tham khảo.
 

File đính kèm

  • VBA Code Explanation.pdf
    43.1 KB · Đọc: 16
Upvote 0
Xin cảm ơn bác @Ba Tê , sau khi nhận được Code của bác đã ngồi nghiền ngẫm cái Code này và viết chú thích ra như sau. Coi như mình đóng góp chút ít cho 4r GPE
To whom may concern, anh em nào muốn hiểu rõ hơn đoạn code của bên trên có thể tham khảo.
Tây trật lất hết trọi. Bầy tôi vừa vừa chút.
 
Upvote 0
Bác @Ba Tê cho mình hỏi chút ạ
Mình nhập thêm dữ liệu để cho code chạy thì chạy rất ngon rồi.
Tuy nhiên khi mình nhập 1 sheet dữ liệu, thì gặp lỗi với từ khóa "Sheet". Mình check cho đến hiện tại thì các từ khóa khác không gặp lỗi này.

Code vẫn chạy và trả về kết quả chính xác cho đến dòng 236 của sheet dữ liệu nhập vào
Sau đó thì báo lỗi, mình chưa hiểu trường hợp này là gặp lỗi gì.

Bác có thể check và tư vấn giúp mình trường hợp này được không ạ
Cảm ơn và trân trọng.
 

File đính kèm

  • Error with Keyword_Sheet.xlsb
    807.7 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
Xin hỏi bạn xuananh712, ô tìm kiếm đó nó sẽ tìm kiếm ở cột nào vậy bạn, hay nó tìm tất cả các từ khóa có trong sheet
 
Upvote 0
Tìm trong mấy cột đầu thôi bạn @quang118
Hic bác @Ba Tê và công đồng pro GPE có biết lỗi xảy ra khi search với từ khóa "Sheet" trong file mình up ngày 31/3 là gì chưa ạ.
Help please. Thank you
 
Upvote 0
Élémentaire.
Télécharger hình mấy cái erreure/faute lên đây cọng đòng professionnel GPE sẽ résoudre cho.
S'il vous plait.
 
Lần chỉnh sửa cuối:
Upvote 0
Élémentaire.
Télécharger hình mấy cái erreure/faute lên đây cọng đòng professionnel GPE sẽ résoudre cho.
S'il vous plait.
Mình up lại file Macro và ảnh chụp màn hình lỗi xảy ra nhé.

Chức năng của Macro là tìm kiếm từ khóa trong các sheet dữ liệu và trả về các dòng dữ liệu có chứa từ khóa đó

Khi mình tìm kiếm dữ liệu với từ khóa "Sheet" (nhập từ khóa Sheet vào ô C1 của Sheet Query) thì gặp lỗi. Mình check cho đến hiện tại thì các từ khóa khác không gặp lỗi này.

Code vẫn chạy và trả về kết quả chính xác cho đến dòng 236 của sheet "HG". Sau đó thì báo lỗi, mình chưa hiểu trường hợp này là gặp lỗi gì.

Mong mọi người giúp đỡ. Cảm ơn
 

File đính kèm

  • Error with Keyword_Sheet.PNG
    Error with Keyword_Sheet.PNG
    25.8 KB · Đọc: 5
  • Error with Keyword_Sheet.xlsb
    807.7 KB · Đọc: 6
Upvote 0
Up up up, hóng hỗ trợ các cao thủ Excel của GPE. Cảm ơn nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom