Tạo VBA kiểm tra worksheet có chứa bất cứ chữ nào có trong một danh sách cho trước (1 người xem)

  • Thread starter Thread starter cennos
  • Ngày gửi Ngày gửi
Liên hệ QC

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

cennos

Thành viên mới
Tham gia
15/6/15
Bài viết
5
Được thích
1
Xin chào các anh/chị,

Em đang cần kiểm tra liệu trong 1 sheet làm việc, có ô nào chứa 1 hoặc nhiều chữ có chứa trong 1 danh sách nằm ở sheet khác không. Em đã dùng công thức và công thức chạy ok nhưng làm máy chậm rất nhiều. Do chạy hàm nên mỗi cột lại phải cho chạy lại một lần nên rất nặng máy vì file cần check của em thường dài vài nghìn dòng và có vài chục cột.

Em rất mong nhờ các cao thủ giúp em tạo một VBA để kiểm tra liệu worksheet có ô nào chứa bất cứ từ nào trong danh sách có sẵn đồng thời hiện message box vị trí ô chứa từ khóa cũng như từ khóa đó là gì trong danh sách sẵn có. (Hoặc tạo thành 1 function cho kết quả True False cho từng cột khi tìm thấy cũng ok ạ, hy vọng sẽ không nặng như dùng hàm).

Em có đính kèm 1 file ví dụ trong đó có 2 sheet, 1 sheet To be checked chứa các ô cần check, 1 sheet Censored chứa danh sách từ khóa để kiểm tra. Mong các cao nhân giúp đỡ.

Xin cám ơn,
 

File đính kèm

Bạn xem theo file kèm theo.
 

File đính kèm

Upvote 0
Code của anh rất hay! Em có để ý là với chữ cuối cùng trong danh sách cần check, kết quả trả về không ở định dạng địa chỉ ô như các từ khóa khác. Anh xem giúp em thêm được không ạ. Cám ơn anh rất nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào các anh/chị,

Em đang cần kiểm tra liệu trong 1 sheet làm việc, có ô nào chứa 1 hoặc nhiều chữ có chứa trong 1 danh sách nằm ở sheet khác không. Em đã dùng công thức và công thức chạy ok nhưng làm máy chậm rất nhiều. Do chạy hàm nên mỗi cột lại phải cho chạy lại một lần nên rất nặng máy vì file cần check của em thường dài vài nghìn dòng và có vài chục cột.

Em rất mong nhờ các cao thủ giúp em tạo một VBA để kiểm tra liệu worksheet có ô nào chứa bất cứ từ nào trong danh sách có sẵn đồng thời hiện message box vị trí ô chứa từ khóa cũng như từ khóa đó là gì trong danh sách sẵn có. (Hoặc tạo thành 1 function cho kết quả True False cho từng cột khi tìm thấy cũng ok ạ, hy vọng sẽ không nặng như dùng hàm).

Em có đính kèm 1 file ví dụ trong đó có 2 sheet, 1 sheet To be checked chứa các ô cần check, 1 sheet Censored chứa danh sách từ khóa để kiểm tra. Mong các cao nhân giúp đỡ.

Xin cám ơn,

Có một vấn đề cần làm rõ. Bạn muốn tìm chính xác theo từ hay muốn tìm chuỗi ký tự. Ví dụ như trong câu có từ "Gayly" thì có xem là có chứa từ "Gay" không?
 
Upvote 0
Cảm ơn bạn. Mình muốn tìm chính xác từ/cụm từ có mặt trong danh sách và code dùng được cho nhiều workbook khác nhau bạn ạ.
 
Upvote 0
Cảm ơn bạn. Mình muốn tìm chính xác từ/cụm từ có mặt trong danh sách và code dùng được cho nhiều workbook khác nhau bạn ạ.
Bạn dùng thử file đính kèm trong bài viết này
Hướng dẫn sử dụng:
Mở file này lên và kích hoạt macro.
Chọn vùng muốn kiểm tra, click chuột phải và chọn lệnh Find Multi Word
Khi muốn thêm từ cần tìm kiếm thì thêm vào file này và lưu lại
Bạn có thể đổi màu các ô tìm thấy bằng cách sửa giá trị hằng số FillColor trong code.
Bạn có thể đổi tên file này nhưng không được sử dụng các ký tự đặc biệt và không nên dùng tiếng Việt có dấu
 

File đính kèm

Upvote 0
Cảm ơn bạn, code hoạt động rất tuyệt! Bạn có thể giúp mình sửa code thay vì bôi vàng cả ô đó thì chỉ bôi đỏ chữ trong danh sách được không? Cái này thật sự quá sức với mình.
 
Upvote 0
Cảm ơn bạn, code hoạt động rất tuyệt! Bạn có thể giúp mình sửa code thay vì bôi vàng cả ô đó thì chỉ bôi đỏ chữ trong danh sách được không? Cái này thật sự quá sức với mình.
Fill color cho word trong 1 cell thì mình không biết.
Còn thay đổi màu cho text thì có thể.
Em xin phép được mượn file của bác huuthang_bd
(thay đổi fill color thành change font color)
Bạn tải file về xem nhé (tô từ khóa thành màu đỏ).
 

File đính kèm

Upvote 0
Fill color cho word trong 1 cell thì mình không biết.
Còn thay đổi màu cho text thì có thể.
Em xin phép được mượn file của bác huuthang_bd
(thay đổi fill color thành change font color)
Bạn tải file về xem nhé (tô từ khóa thành màu đỏ).

Mình gặp trục trặc không mở file attach của bạn được. Bạn xem lại giúp mình nhé.
 
Upvote 0
Để mình xem lại.
To bác huuthang_bd: Bác không làm cái reset menu content, tắt file đi vẫn còn menu đó. Cái này bất tiện ah nha.
Em thích dùng add-in hơn.
 
Upvote 0
Nếu chỉ tìm xem text trong cell có chứa hay không thì bài này dùng Regex rất hiệu quả.
Tuy nhiên nếu phải tô mầu từ thì rắc rối hơn nhiều. Regex phải bắt lấy các từ nó tìm được và thay thế.
 
Upvote 0
Cảm ơn bạn, code hoạt động rất tuyệt! Bạn có thể giúp mình sửa code thay vì bôi vàng cả ô đó thì chỉ bôi đỏ chữ trong danh sách được không? Cái này thật sự quá sức với mình.
Bạn thử lại với file tôi đính kèm trong bài này.
Lưu ý: Do bạn muốn tìm theo từ/cụm từ nên nếu một ô có giá trị www.giaiphapexcel.com thì code cũng coi như không tìm thấy www..com nhé.
Để mình xem lại.
To bác huuthang_bd: Bác không làm cái reset menu content, tắt file đi vẫn còn menu đó. Cái này bất tiện ah nha.
Em thích dùng add-in hơn.
Tôi có xóa nhưng tôi chỉ xóa cái tôi tạo ra nhưng do khi sửa chữ hoa tôi sửa không hết nên nó không xóa (đã sửa ở file trong bài này). Tôi không Reset vì biết đâu người ta có thêm vào các menu khác, Reset thì mất hết của người ta rồi còn gì.

Tôi không tạo thành Add-in vì muốn để cho tác giả thay đổi danh sách các từ cần tìm kiếm một cách dễ dàng.

Ngoài ra file ở bài #8 của bạn chưa đạt vì người ta cần tìm chính xác từ/cụm từ nên khi tô màu cần phải xét xem nó có phải là từ/cụm từ hay không nhưng code của bạn chưa kiểm tra vấn đề này (Code của bạn sẽ tô màu như sau: Gay, gayly)
 

File đính kèm

Upvote 0
Tôi có xóa nhưng tôi chỉ xóa cái tôi tạo ra nhưng do khi sửa chữ hoa tôi sửa không hết nên nó không xóa (đã sửa ở file trong bài này). Tôi không Reset vì biết đâu người ta có thêm vào các menu khác, Reset thì mất hết của người ta rồi còn gì.
Em đồng ý là không CommandBars("Cell").Reset vì sẽ hủy mất các menu khác.
Bác có xóa (trong ThisWorkbook) nhưng em thử như sau: Mở file của bác lên. Rồi tắt hết các file excel. Khởi chạy MS Excel lên. Click chuột phải vẫn có menu Find multi word.
Một vấn đề nữa: Bác copy file Find Multi Word.xls ra mấy bản nữa rồi Mở/ Đóng. Mở 1 file excel lên, click chuột phải thấy thêm mấy cái Find multi word vì menu này chưa được xóa. (hình đính kèm)
menu.jpg
Tôi không tạo thành Add-in vì muốn để cho tác giả thay đổi danh sách các từ cần tìm kiếm một cách dễ dàng.
File của bác khi chạy menu Find multi word vẫn phải mở file Find Multi Word.xls lên. Vậy add-in cho lệnh chạy + 1 file chứa bảng từ khóa cũng thực hiện được.
Ngoài ra file ở bài #8 của bạn chưa đạt vì người ta cần tìm chính xác từ/cụm từ nên khi tô màu cần phải xét xem nó có phải là từ/cụm từ hay không nhưng code của bạn chưa kiểm tra vấn đề này (Code của bạn sẽ tô màu như sau: Gay, gayly)
Cái này em phải xem lại ạ.
 
Upvote 0
Tôi có xóa nhưng tôi chỉ xóa cái tôi tạo ra nhưng do khi sửa chữ hoa tôi sửa không hết nên nó không xóa (đã sửa ở file trong bài này). Tôi không Reset vì biết đâu người ta có thêm vào các menu khác, Reset thì mất hết của người ta rồi còn gì.
Em đồng ý là không CommandBars("Cell").Reset vì sẽ hủy mất các menu khác.
Bác có xóa (trong ThisWorkbook) nhưng em thử như sau: Mở file của bác lên. Rồi tắt hết các file excel. Khởi chạy MS Excel lên. Click chuột phải vẫn có menu Find multi word.
Một vấn đề nữa: Bác copy file Find Multi Word.xls ra mấy bản nữa rồi Mở/ Đóng. Mở 1 file excel lên, click chuột phải thấy thêm mấy cái Find multi word vì menu này chưa được xóa. (hình đính kèm)
Nếu bạn chưa thử file ở bài #12 thì hãy thử lại bằng file đó.
File của bác khi chạy menu Find multi word vẫn phải mở file Find Multi Word.xls lên. Vậy add-in cho lệnh chạy + 1 file chứa bảng từ khóa cũng thực hiện được.
Đằng nào cũng phải có file dữ liệu, vậy sao phải tách ra làm 2 file? Với tôi, tôi thấy 1 file tiện hơn nên tôi làm chung 1 file.
 
Upvote 0

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

Back
Top Bottom