Cách viết VBA để tìm kiếm trong Excel như google (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

Luan Nguyen 02

Thành viên mới
Tham gia
16/12/24
Bài viết
1
Được thích
0
Mọi người cho em hỏi cách search dữ liệu trên excel được như google với. Ví dụ: dữ liệu search: “giải pháp in nhanh”. Trên google sẽ tách dữ liệu search ra thành 4 từ: “giải, pháp, in, nhanh” và tìm kiếm kết quả có 4 từ trên. Còn trong excel thì chỉ ra kết quả có chứa 4 từ liền nhau “giải pháp in nhanh”.
 
Cách thì chắc là có; Nhưng chịu ỉga lập file thì chả ai muốn!

:D :D :D
Chúc các bạn cả tuần nhiều thành công!
 
Upvote 0
VBA tìm như sau bạn nhé:

Chuỗi tìm kiếm là "giải pháp in nhanh" sẽ có các trường hợp xảy ra, kiểu như toán tập hợp, nhưng loại trừ một số trường hợp không tìm kiếm.

Ví dụ chuỗi cần tìm là Text:
1. Tìm đầy đủ chuỗi là Text Like "*giải pháp in nhanh*". Hoặc InStr.
2. Tìm bỏ ký tự unicode là Text Like "gi?i ph?p in nhanh"
3. Tìm bỏ ký tự tiếng Việt tổ hợp là Text Like "gi?i ph?p in nhanh" Or Text Like "gi??i ph??p in nhanh". Vì hỗ trợ tiếng Việt có nhiều bảng mã, nên cần sử dụng ? và ?? cho 1 ký mã tiếng Việt.
4. Tìm có chứa đủ các từ "*gi*i*ph*p*in*nhanh*"
5. Tìm theo xác suất xảy ra lớn hơn, bằng cách hoán vị các từ "gi?i", "ph?p", "in", "nhanh". Sau đó hoán vị các ký tự nếu muốn có thêm các kết quả.

Các hàm và phương thức bổ trợ tìm kiếm, bao gồm: toán tử Like, tìm vị trí InStr, phương thức StrComp, biểu thức chính quy, tìm với toán tử Like trong SQL.

Với thuật toán google, họ giảm bớt khả năng xảy ra trong xác suất để giảm chi phí. Họ sẽ làm rất nhiều bước phân tích chuỗi tìm kiếm, soát lỗi các từ, hoán vị các từ hoặc ký tự. Họ truy quét dữ liệu trên internet và xử lý dữ liệu tạo ra tất cả khả năng kết quả theo xác suất trước khi cho bạn tìm kiếm, và khi bạn tìm kiếm, họ chỉ cần kiểm tra các khả năng tồn tại của chuỗi tìm kiếm, và trả kết quả nào theo tỉ lệ từ cao đến thấp.

Ví dụ: Tìm xác xuất hoán vị ký tự trong từ "nhanh": họ sẽ hoán vị tìm là: "nhanh", "anh*nh", "h*an*nh". Để giảm xác suất, họ không cho hoán vị từng ký tự sẽ gây ra tốn kém.

Nếu bạn biết về Dictionary, bạn tạo ra tất cả khả năng xảy ra cho vào Dict, thì sẽ tìm kiếm nhanh hơn, bây giờ bạn chỉ cần lấy từng mục của tập hợp tìm kiếm. Google xử lý tìm kiếm của bạn như vậy.


Bạn có thể tạo ra các khả năng xảy ra như Google nhưng bộ nhớ của máy tính là không đủ.


Cách tính tỉ lệ của kết quả tìm kiếm cũng là một thuật toán quan trọng để sắp xếp kết quả.

Để tính được tỉ lệ của mỗi kết quả, bạn phải có khả năng viết lại toán tử Like sẽ làm được, Google có nhiều thuật toán tính tỉ lệ, theo tôi thì 100% trong đó, họ có dựa vào tổng số lượng tính của CPU cho mỗi kết quả.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom