Mục lục
Triển khai VBA là phương pháp hiệu quả nhất, nhanh nhất và an toàn nhất để chạy bất kỳ thao tác nào trong Excel. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tìm các chuỗi nhất định trong một chuỗi đã cho khác bằng cách sử dụng VBA trong Excel.
Tải xuống Mẫu thực hành
Bạn có thể tải xuống mẫu Excel thực hành miễn phí từ đây.
VBA để tìm trong String.xlsm
Hàm InStr
Microsoft Excel có một hàm tích hợp có tên là Hàm InStr để tìm vị trí của các chuỗi cụ thể trong một Chuỗi đã cho.
Cú pháp chung:
InStr([start], string1, string2, [compare])
Đây,
Đối số | Bắt buộc/Tùy chọn | Định nghĩa |
---|---|---|
bắt đầu | Tùy chọn | Vị trí bắt đầu tìm kiếm.
|
chuỗi1 | Bắt buộc | Chuỗi cần tìm kiếm, Chuỗi chính. |
string2 | Bắt buộc | Chuỗi cần tìm kiếm trong chuỗi chính . |
so sánh | Tùy chọn | Hàm InStr phân biệt chữ hoa chữ thường theo mặc định. Nhưng nếu bạn muốn chạy InStr không phân biệt chữ hoa chữ thường, thì bạn có thể chuyển đối số vào đây để thực hiện một phép so sánh nhất định. Lập luận này có thể như saugiá trị,
Theo mặc định, InStr lấy vbBinaryCompare làm đối số so sánh. |
8 ví dụ đơn giản để tìm vị trí chuỗi cụ thể trong chuỗi đã cho bằng VBA
Hãy xem một số ví dụ đơn giản để tìm vị trí của các chuỗi nhất định trong chuỗi đã cho bằng cách sử dụng VBA .
1. VBA để tìm vị trí của văn bản trong chuỗi
Dưới đây là một ví dụ về InStr để tìm vị trí của văn bản trong một chuỗi.
- Nhấn Alt + F11 trên bàn phím hoặc chuyển đến tab Nhà phát triển -> Visual Basic để mở Trình soạn thảo Visual Basic .
- Trong cửa sổ mã bật lên, từ thanh menu , nhấp vào Chèn -> Mô-đun .
- Bây giờ, trong cửa sổ mã, hãy viết một chương trình InStr đơn giản bên trong VBA Sub Quy trình (xem bên dưới).
2694
Mã của bạn hiện đã sẵn sàng để chạy.
- Nhấn F5 trên bàn phím hoặc từ thanh menu, chọn Chạy -> Chạy Sub/UserForm . Bạn cũng có thể chỉ cần nhấp vào biểu tượng Play nhỏ trong thanh menu phụ để chạy macro.
Bạn sẽ thấy rằng hộp thông báo bật lên sẽ cung cấp cho bạn một số khai báo vị trí của văn bản mà bạn muốn kiểm tra.
Giải thích:
Chuỗi chính của chúng tôi, “ Happiness is a choice ” là một câu gồm 21 chữ cái (có dấu cách) và chúng tôi muốn tìm vị trí của văn bản “ choice ” trong chuỗi đó. Văn bản “ choice ” bắt đầu từ vị trí thứ 16 của chuỗi chính, do đó chúng tôi nhận được số 16 làm đầu ra trong hộp thông báo.
2. VBA để tìm văn bản từ một vị trí cụ thể trong chuỗi
Bây giờ hãy tìm hiểu điều gì sẽ xảy ra nếu chúng ta muốn lấy vị trí từ một số nhất định.
- Tương tự như trước đó, hãy mở Visual Basic Editor từ tab Developer và Insert a Module trong cửa sổ mã.
- Trong cửa sổ mã, hãy viết một chương trình InStr đơn giản được hiển thị ở trên và chuyển giá trị vào đối số bắt đầu theo vị trí bạn muốn đếm văn bản của mình.
5238
- Tiếp theo, Chạy mã.
Bạn sẽ thấy hộp thông báo bật lên sẽ cung cấp cho bạn một số khai báo vị trí của văn bản bắt đầu từ một vị trí nhất định mà bạn muốn kiểm tra.
Giải thích:
Như chúng ta đã biết (từ cuộc thảo luận ở giai đoạn 1) rằng văn bản “ lựa chọn ” bắt đầu từ vị trí 16 , vì vậy chúng tôi đã chèn hai “ choice ” trong chuỗi chính và đặt 17 làm chuỗi của chúng tôiTham số đầu tiên để bỏ qua “ lựa chọn ” đầu tiên. Vì vậy, chúng tôi Chạy macro ở trên và nó hiển thị cho chúng tôi số vị trí 27 chính xác là số vị trí của giây “ lựa chọn ” trong chuỗi đã cho.
3. VBA để tìm văn bản với hàm InStr phân biệt chữ hoa chữ thường trong chuỗi
Từ phần giới thiệu về hàm InStr , bạn đã biết rằng theo mặc định, hàm InStr phân biệt chữ hoa chữ thường. Hãy tìm hiểu điều đó bằng một ví dụ.
Xem mã VBA sau đây, nơi chúng tôi muốn tìm vị trí của từ “ Choice ” với chữ “C” viết hoa trong chuỗi “ Happiness is a choice ” trong đó lựa chọn được viết bằng chữ “c” nhỏ .
- Chạy mã và tìm 0 làm đầu ra của chúng tôi.
Đó là do hàm InStr xử lý chữ “C” viết hoa và chữ “c” nhỏ khác nhau. Vì vậy, nó đã tìm kiếm từ “ Choice ” trong chuỗi và không nhận được bất kỳ kết quả nào phù hợp nên đã trả về 0 .
- Để làm cho hàm InStr phân biệt chữ hoa chữ thường , hãy đặt đối số so sánh thành vbTextCompare (xem bên dưới).
6199
- Chạy mã.
Bạn sẽ nhận được vị trí của văn bản từ chuỗi, cho dù văn bản được viết bằng chữ in hoa hay chữ nhỏ .
4. VBA để tìm văn bản từ bên phải của chuỗi
Cho đến nay, hàm InStr chỉ cung cấp cho chúng ta vị trí từ phía bên trái của chuỗi. Nhưng nếu bạn muốn tìm vị trí văn bản từ bên phải của chuỗi thì sao.
Hàm InStrRev tìm kiếm từ bên phải. Hàm InStrRev hoạt động rất giống với hàm InStr và nó sẽ tìm cho bạn vị trí của văn bản từ phía bên phải của chuỗi.
Hãy xem các ví dụ sau để hiểu sự khác biệt.
- Nếu chúng ta chạy đoạn mã sau với hàm InStr thì,
nó cho chúng ta vị trí ( 16 ) của văn bản đầu tiên “ lựa chọn ”.
- Nhưng nếu chúng ta chạy cùng một mã với Hàm InStrRev thì
nó sẽ cho chúng ta vị trí ( 27 ) của văn bản cuối cùng “ lựa chọn ”.
Các bài đọc tương tự:
- Tìm Tiếp theo bằng VBA trong Excel (2 ví dụ)
- Cách tìm và thay thế bằng VBA (11 cách)
- Tìm kết quả khớp chính xác bằng VBA trong Excel (5 cách)
5. VBA để tìm vị trí của một ký tự trong chuỗi
Bạn cũng có thể tìm vị trí của một ký tự nhất định trong một chuỗi giống như cách bạn tìm thấy văn bản.
- Sao chép mã sau vào cửa sổ mã VBA của bạn
8921
- Và Chạy macro.
Đầu tiên “ e ” trong chuỗi đã cho của chúng tôi là tạivị trí số 7 .
6. VBA để tìm chuỗi con trong một chuỗi
Sau đây chúng ta sẽ tìm hiểu cách tìm xem một chuỗi có chứa chuỗi con hay không.
Để làm được điều đó, chúng ta có để chạy Câu lệnh IF trong mã của chúng tôi.
- Tương tự như trước đây, hãy mở Visual Basic Editor từ tab Developer và Chèn một Mô-đun vào cửa sổ mã.
- Trong cửa sổ mã, sao chép và dán mã sau đây.
4449
Của bạn mã hiện đã sẵn sàng để chạy.
- Chạy macro.
Nếu chuỗi của bạn chứa chuỗi con thì bạn sẽ nhận được kết quả tìm thấy kết quả khớp , nếu không, nó sẽ trả về kết quả không tìm thấy kết quả khớp. Trong ví dụ của chúng tôi, chúng tôi muốn tìm hiểu xem chuỗi chính “ Happiness is a choice ” có chứa từ “ choice ” hay không không phải. Khi thực hiện, chúng tôi nhận được kết quả Đã tìm thấy kết quả phù hợp .
7. VBA để tìm chuỗi trong một phạm vi ô
Bạn có thể tìm kiếm một văn bản nhất định trong một phạm vi ô gồm chuỗi và trả về một chuỗi nhất định.
Hãy xem ví dụ sau nơi chúng ta sẽ tìm “ Dr. ” và khi khớp, nó sẽ trả về “ Doctor ”.
- Dưới đây là mã để nhận kết quả được thảo luận ở trên,
2388
- Chạy mã và kết quả được hiển thị bên dưới
- Bạn có thể sửa đổi macro theo nhu cầu của mình. Ví dụ, nếu bạn muốnđể tìm “ Prof. ” trong bất kỳ ô nào của chuỗi và trả về “ Professor ”, sau đó chỉ cần chuyển “ Prof. ” làm giá trị thay vì “ Dr ”. ở dòng thứ 4 của macro và “ Giáo sư ” thay vì “ Bác sĩ ” ở dòng thứ 5 của macro và xác định số phạm vi ô tương ứng.
8. VBA để tìm chuỗi trong một ô
Bạn cũng có thể tìm kiếm một văn bản nhất định trong một ô của chuỗi và trả về một chuỗi nhất định.
- Sao chép đoạn mã sau và dán vào cửa sổ mã.
8130
Mã này sẽ tìm kiếm “ Dr. ” trong Ô B5 và nếu tìm thấy kết quả khớp thì trả về “ Doctor ” trong Ô C5 .
- Bạn có thể sửa đổi macro theo nhu cầu của mình. Chẳng hạn, nếu bạn muốn tìm “ Prof. ” trong bất kỳ ô nào của chuỗi và trả về “ Professor ”, sau đó chỉ cần chuyển “ Prof. ” làm giá trị thay vì “ Dr ”. trong dòng thứ 2 của macro và “ Professor ” thay vì “ Doctor ” trong dòng thứ 3 của macro và xác định số tham chiếu ô tương ứng.
Kết luận
Bài viết này hướng dẫn bạn cách tìm các văn bản nhất định trong chuỗi trong Excel bằng macro VBA. Tôi hy vọng bài viết này rất hữu ích cho bạn. Vui lòng đặt bất kỳ câu hỏi nào liên quan đếnchủ đề.