Mục lục
Khi làm việc với các mã VBA của Excel, chúng tôi bắt gặp một vài hàm tích hợp giúp chuyển đổi một tác vụ phức tạp thành mã một dòng nhỏ. InStr là một hàm như vậy có sẵn trong Excel VBA tìm kiếm một chuỗi cụ thể trong một chuỗi đã cho khác bắt đầu từ một vị trí nhất định. Hôm nay tôi sẽ trình bày cách bạn có thể sử dụng hàm InStr trong VBA để tìm kiếm một chuỗi cụ thể trong một chuỗi đã cho khác.
Tải xuống Sách bài tập thực hành
InStr Function.xlsm
Giới thiệu Hàm InStr VBA
- Tóm tắt
Tìm kiếm một chuỗi cụ thể trong một chuỗi nhất định, bắt đầu từ một vị trí nhất định. Nếu tìm thấy kết quả khớp, hãy trả về vị trí trong chuỗi đã cho từ nơi bắt đầu khớp.
- Cú pháp
InStr([start ],string1,string2,[so sánh])
- Đối số
TRANH LUẬN | YÊU CẦU | MÔ TẢ
|
---|---|---|
[bắt đầu] | Tùy chọn | Vị trí mà nó sẽ bắt đầu tìm kiếm. Giá trị mặc định là 1. |
chuỗi1 | Bắt buộc | Chuỗi mà trong đó nó tìm kiếm một chuỗi đã cho. |
string2 | Bắt buộc | Chuỗi mà nó tìm kiếm trong một chuỗi đã cho. |
[so sánh] | Tùy chọn | Một giá trị số giữa {-1,0,1,2} chỉ định loại so sánh. Cácmặc định là -1 (vbUseCompareOption). Nếu câu lệnh So sánh tùy chọn không được chỉ định, hãy thực hiện So sánh nhị phân. |
Lưu ý:
- Mặc dù đối số [start] và đối số [so sánh] là tùy chọn, bạn cần có đối số [start] nếu bạn chỉ định đối số [so sánh] . Nếu không, nó sẽ gây ra lỗi.
- Nếu một trong hai hoặc cả hai đối số [start] và đối số [compare] là Null , bạn sẽ gặp lỗi.
- Bốn giá trị được chỉ định trong đối số [so sánh] thực hiện bốn loại so sánh khác nhau. Chúng được đề cập dưới đây:
GIÁ TRỊ | Hằng số | DESCRIPTION
|
---|---|---|
-1 | vbUseCompareOption | Thực hiện so sánh được chỉ định trong câu lệnh So sánh tùy chọn. |
0 | vbBinaryCompare | Thực hiện so sánh nhị phân. |
1 | vbTextCompare | Thực hiện so sánh văn bản. |
2 | vbDatabaseCompare | Thực hiện so sánh dựa trên cơ sở dữ liệu của bạn Câu lệnh . |
- So sánh tùy chọn là một câu lệnh được cung cấp trước khi bắt đầu mã VBA chính. Nó chỉ định xem mã sẽ tìm kiếm So sánh nhị phân hay So sánh văn bản khi được yêu cầu.
Văn bản so sánh tùy chọn
-
- Nói một cách đơn giản , So sánh nhị phân có nghĩa là phân biệt chữ hoa chữ thườngso sánh.
- Nói một cách đơn giản , So sánh văn bản có nghĩa là so sánh không phân biệt chữ hoa chữ thường.
- Giá trị trả về
- Trả về vị trí trong string1 mà từ đó string2 bắt đầu.
- Trong trường hợp không tìm thấy string2 trong string1 bắt đầu từ vị trí start , trả về 0.
- Nếu string1 có độ dài bằng 0, trả về 0.
- Nếu string2 có độ dài bằng 0, trả về đối số start .
- Và cuối cùng, nếu bất kỳ string1 hoặc string2 là Null , trả về lỗi.
3 Ví dụ Dễ dàng Sử dụng Hàm InStr VBA
In Trong phần này, chúng ta sẽ xem ba ví dụ đơn giản về việc áp dụng hàm VBA InStr trong Excel. Hãy xem ví dụ đầu tiên về hàm InStr trong mã VBA.
1. Quyết định Địa chỉ có phải là Địa chỉ Email hay không bằng cách Sử dụng Hàm InStr của VBA
Ở đây, chúng tôi đã lấy một tập dữ liệu chứa một số địa chỉ liên hệ của khách hàng. Mục tiêu của chúng ta ở đây là xác định xem các địa chỉ đó có phải là địa chỉ email hay không.
Bây giờ chúng ta sẽ phát triển mã VBA bằng hàm InStr để xác định cho dù đó có phải là Địa chỉ Email hay không. Để làm điều đó, hãy làm theo các bước bên dưới.
Các bước:
- Ban đầu, hãy chuyển đến tab Nhà phát triển và chọn Visual Basic ( Hoặc nhấn Alt+F11) để mở VBA cửa sổ.
- Sau đó, trên cửa sổ VBA , hãy chuyển đến Chèn > Mô-đun .
- Sau đó, trên mô-đun, hãy dán đoạn mã sau:
2915
- Hơn nữa, chúng ta đã tạo một hàm gọi là DECISION . Nó quyết định một địa chỉ có phải là địa chỉ email hay không. Hãy áp dụng hàm cho tập dữ liệu mà chúng ta có.
- Trên ô C5 , hãy viết công thức sau rồi tự động điền các ô còn lại bằng cách sử dụng Xử lý điền .
=DECISION(B5)
- Như có thể thấy, chúng tôi đã xác định từng địa chỉ cho dù đó là địa chỉ email hay không.
🎓 Quy tắc hoạt động như thế nào?
- Hàm QUYẾT ĐỊNH(chuỗi1 dưới dạng chuỗi)
Đầu tiên, điều này tạo ra một hàm có tên là DECISION với một đối số chuỗi có tên string1 .
- Dim Position As Integer
Nó khai báo một biến số nguyên có tên Position .
- Position = InStr(1, string1, “@”, 0)
Cái này gán giá trị của Vị trí biến làm đầu ra của hàm InStr với các đối số 1, chuỗi1, “@” và 0 . Tóm lại, điều này chỉ định vị trí trong địa chỉ có “@” .
- Nếu Vị trí = 0 thì QUYẾT ĐỊNH = “Không phải Email”
Nó chỉ định đầu ra của hàm DECISION là “Không phải Email” , nếu Vị trí biến là 0 , nghĩa là không có “@” trong địa chỉ.
(Nhắc lại nếu không tìm thấy bất kỳ chuỗi nào trong chuỗi đã cho, thì
- Else DECISION = “Email”
Điều này chỉ định đầu ra của hàm DECISION dưới dạng “Email” nếu có “@” trong địa chỉ. Do đó, những địa chỉ có “@” được phân loại là Email và những địa chỉ còn lại được phân loại là “Không phải Email” .
Bài đọc tương tự
- Cách sử dụng hàm VBA UCASE trong Excel (4 ví dụ)
- Sử dụng hàm MsgBox trong Excel VBA (Hướng dẫn đầy đủ)
- Cách sử dụng hàm VBA SPLIT trong Excel (5 ví dụ)
- Sử dụng hàm LCase trong VBA trong Excel (Với 4 Ví dụ)
- Cách sử dụng Hàm Fix trong Excel VBA (4 Ví dụ)
2. Sử dụng Chức năng VBA InStr để Trích xuất phần mở rộng của một số địa chỉ email
Ở đây, chúng tôi có danh sách một số Địa chỉ email của một số khách hàng. Lần này, chúng tôi sẽ trích xuất phần mở rộng của địa chỉ email như liệu họ có gmail.com hoặc yahoo.com .
Để làm điều đó, hãy làm theo các bước bên dưới.
Các bước:
- Để bắt đầu, giống như phương pháp trước, hãy mở một VBA<2 mới> mô-đun và dán đoạn mã sau vào cửa sổ.
8551
- Ngoài ra, chúng tôi đã tạo một chức năng gọi là PHẦN MỞ RỘNG . Nó trích xuất phần mở rộng của bất kỳ địa chỉ email nào.
- Hơn nữa, hãy áp dụng hàm này cho tập dữ liệu mà chúng ta có. Trước tiên, hãy nhập công thức này vào ô C5 rồi nhấp đúp vào Xử lý điền .
=EXTENSION(B5)
- Cuối cùng, chúng ta có thể thấy rằng chúng ta đã trích xuất thành công Phần mở rộng của tất cả các Email.
🎓 Code hoạt động như thế nào?
- MỞ RỘNG Hàm(Email Dưới dạng Chuỗi)
Điều này tạo ra một hàm mới gọi là EXTENSION , với một đối số chuỗi có tên Email .
- Dim Position As Integer
Phần này khai báo một biến số nguyên có tên Position .
- Position = InStr(1, Email, “@”, 0)
Điều này chỉ định giá trị của <1 Biến>Position làm đầu ra của hàm InStr với các đối số 1, Email, “@” và 0 . Tóm lại, điều này chỉ định vị trí trong Email nơi có “@” .
- EXTENSION = Right(Email, (Len (Email) – Vị trí))
Phần này chỉ định đầu ra của hàm EXTENSION là các ký tự sau ký hiệu “@” . Đây là phần mở rộng bắt buộc của Email .
3. Trích xuất Họ hoặc Tên từ một Tên bằng cách Sử dụng Hàm InStr của VBA
Cuối cùng, chúng ta sẽ thực hiện một nhiệm vụ duy nhất khác. Lần này chúng tôi có tên của một số nhân viên củamột công ty. Và chúng tôi sẽ cố gắng xây dựng một hàm để trích xuất tên hoặc họ của nhân viên.
Để làm điều đó, hãy làm theo các bước bên dưới.
Các bước:
- Đầu tiên, tương tự như phương pháp 1 , hãy dán mã bên dưới vào một mô-đun mới trong cửa sổ VBA.
7973
- Ở đây, chúng tôi đã tạo một hàm gọi là SHORTNAME để trích xuất tên hoặc họ từ một tên. Hãy áp dụng công thức này cho tập dữ liệu của chúng ta.
- Đầu tiên, để trích xuất tên, hãy viết công thức bên dưới vào ô C5 .
=SHORTNAME(B5,-1)
- Cuối cùng, để trích xuất họ, chúng tôi viết công thức sau vào D5 :
=SHORTNAME(B5,1)
- Sau đó, nếu chúng tôi tự động điền các ô còn lại bằng Fill Handler , chúng ta sẽ thấy kết quả mong muốn.
🎓 Quy tắc hoạt động như thế nào?
- Hàm SHORTNAME(Tên là Chuỗi, First_or_Last là Số nguyên)
Hàm này tạo ra một hàm mới có tên là SHORTNAME với một đối số Chuỗi có tên Name và một Đối số Số nguyên có tên First_or_Last .
- Dim Break As Integer
Phần này khai báo một biến số nguyên mới có tên Break .
- Break = InStr(1, Name,” “, 0)
Nó gán giá trị của biến Break làm đầu ra của hàm InStr với các đối số 1, Tên, “ ” và 0 . Tóm lại, điều này chỉ định vị trí trong Name nơi có khoảng trắng (“ ”).
- If First_or_Last = -1 Then SHORTNAME = Left(Name, Break – 1)
Dòng này gán đầu ra của hàm SHORTNAME là các ký tự trước dấu cách , nếu đối số First_or_Last là -1. Đây là tên đầu tiên.
- SHORTNAME = Right(Name, Len(Name) – Break)
Phần này chỉ định đầu ra của SHORTNAME hoạt động như các ký tự sau dấu cách , nếu đối số First_or_Last là 1. Đây là họ.
Kết luận
Bằng cách này, bạn có thể viết mã VBA bằng hàm InStr tìm ra vị trí của một chuỗi cụ thể trong một chuỗi khác đã cho và sau đó bạn có thể tạo các hàm của riêng mình cho nhiều mục đích sử dụng khác nhau. Hơn nữa, nếu bạn có bất kỳ câu hỏi nào, vui lòng hỏi chúng tôi.