VBA InStrRev | Cách sử dụng Hàm InStrRev trong Excel VBA?

Excel VBA INSTRREV

Hàm VBA INSTRREV , viết tắt của 'In String Reverse' , trả về vị trí xuất hiện đầu tiên của một chuỗi tìm kiếm (chuỗi con) trong một chuỗi khác, bắt đầu từ cuối chuỗi (từ phải sang trái) mà chúng tôi đang tìm kiếm một chuỗi có thể tìm kiếm.

Hàm INSTRREV bắt đầu tìm kiếm chuỗi có thể tìm kiếm từ cuối chuỗi mà chúng ta cần tìm nhưng đếm vị trí từ đầu. Có một Hàm INSTR vba nữa (viết tắt của 'In String' ) cũng tìm kiếm một chuỗi trong chuỗi khác và trả về vị trí nhưng hàm này bắt đầu tìm kiếm từ đầu chuỗi mà từ đó chúng ta tìm kiếm chuỗi có thể tìm kiếm được.

INSTRREVINSTR , cả hai đều là hàm String / Text VBA tích hợp sẵn của MS Excel. Chúng tôi có thể sử dụng chúng trong khi viết bất kỳ macro nào trong Microsoft Visual Basic Editor.

Cú pháp

Như chúng ta thấy trong hình trên, có 2 đối số bắt buộc và 2 đối số tùy chọn.

  • StringCheck As String: Đây là đối số bắt buộc. Chúng ta cần đưa ra biểu thức chuỗi đang được tìm kiếm.
  • StringMatch As String: Đối số này cũng là bắt buộc. Chúng ta cần chỉ định biểu thức chuỗi đang được tìm kiếm.
  • Start As Long = -1: Đây là đối số tùy chọn. Chúng tôi chỉ định biểu thức số. Theo mặc định, nó lấy -1 có nghĩa là tìm kiếm bắt đầu ở vị trí ký tự cuối cùng. Nếu chúng ta chỉ định bất kỳ giá trị dương nào như 80 thì nó bắt đầu tìm kiếm từ cuối chuỗi trong 80 ký tự bên trái đó.
  • So sánh như VbCompareMethod = vbBinaryCompare As Long: Đối số này là tùy chọn.

Chúng ta có thể chỉ định các giá trị sau cho đối số này.

Giá trị trả lại

  1. Hàm INSTRREV trả về 0 nếu kiểm tra chuỗi  có độ dài bằng 0 hoặc  không tìm thấy đối sánh chuỗi hoặc đối số 'start' > độ dài của khớp chuỗi .
  2. Hàm này trả về 'Null' nếu kiểm tra chuỗi  hoặc kết quả khớp chuỗi  là "Null" .
  3. Nếu khớp chuỗi có độ dài bằng 0, thì hàm sẽ trả về để bắt đầu .
  4. Nếu tìm thấy khớp chuỗi trong kiểm tra chuỗi , thì hàm trả về vị trí mà khớp được tìm thấy.

Làm thế nào để sử dụng chức năng VBA INSTRREV?

Bạn có thể tải Mẫu VBA INSTRREV Excel này tại đây - Mẫu VBA INSTRREV Excel

Giả sử, chúng ta có dữ liệu về tên phim và đạo diễn của chúng. Chúng tôi muốn tách tên giám đốc ra.

Chúng tôi có dữ liệu trong 1201 hàng. Nếu chúng ta thực hiện công việc này theo cách thủ công thì sẽ mất rất nhiều thời gian.

Để làm tương tự, chúng tôi sẽ sử dụng mã VBA. Các bước là:

  • Chúng ta cần nhấp vào Lệnh 'Visual Basic' có sẵn trong Nhóm 'Mã' trong Tab 'Nhà phát triển' hoặc chúng ta có thể nhấn Alt + F11 để mở trình chỉnh sửa cơ bản trực quan.

  • Chúng tôi sẽ chèn một mô-đun bằng menu 'Chèn' .

  • Chúng tôi sẽ tạo một chương trình con có tên là 'SplittingNames' .

  • Chúng ta cần 6 biến. Một để lưu trữ các giá trị của các ô mà chúng ta sẽ thao tác. Thứ hai để lưu trữ vị trí của khoảng trắng đầu tiên trong chuỗi, thứ ba để lưu trữ vị trí của khoảng trắng cuối cùng trong chuỗi, thứ tư để lưu trữ số hàng cuối cùng, thứ năm và thứ sáu cho hàng và cột mà chúng ta sẽ sử dụng để in các giá trị trong các ô liền kề.

  • Để tìm ra hàng được sử dụng cuối cùng trong trang tính, chúng ta cần sử dụng mã sau.

Đoạn mã này trước tiên sẽ chọn ô B1 và ​​sau đó chọn ô được sử dụng cuối cùng trong cùng một cột và sau đó chúng tôi gán số hàng của ô cho biến 'LastRow'.

  • Bây giờ để thao tác với tất cả các ô trong cột B, chúng ta sẽ chạy một vòng lặp 'for' .

  • Chúng ta sẽ lần lượt lưu trữ giá trị các ô của cột B từ hàng 2 đến hàng 1201 trong biến 's' để thao tác với chúng.

  • Chúng ta cần đặt giá trị của biến 'Column' thành 3 vì chúng ta cần viết các tên phân chia trong C (Cột thứ 3) và một cột trở đi.

  • Nếu chuỗi chỉ là một từ có nghĩa là không có khoảng trắng trong chuỗi thì chúng ta muốn chính chuỗi đó làm đầu ra. Đối với điều này, chúng tôi sẽ chỉ định điều kiện bằng cách sử dụng 'Câu lệnh If và Khác' với dấu hoa thị (biểu thị một hoặc nhiều ký tự) như sau:

  • Nếu có khoảng trống trong chuỗi thì chúng ta muốn tách chuỗi. Để làm tương tự, chúng tôi đã sử dụng hàm INSTRINSTRREV để tìm ra vị trí khoảng trắng đầu tiên và vị trí dấu cách cuối cùng tương ứng. Nó sẽ giúp chúng ta tìm từ đầu tiên và từ cuối cùng trong chuỗi tương ứng.

Hàm INSTR lấy đối số như sau:

Chi tiết đối số

  • Bắt đầu: Bắt đầu từ vị trí nào.
  • String1: Chúng ta cần đưa ra biểu thức chuỗi đang được tìm kiếm.
  • String2: Chúng ta cần chỉ định biểu thức chuỗi đang được tìm kiếm.

So sánh như VbCompareMethod: Chỉ định phương thức So sánh. Theo mặc định, nó là so sánh nhị phân.

  • Chúng tôi cần phải sử dụng VBA LEFT chức năng để trích xuất ký tự bên trái từ chuỗi. Chúng tôi đã sử dụng 'Dấu cách cuối cùng-1' để lấy các ký tự bên trái trước dấu cách cuối cùng.

Chúng ta cần sử dụng các hàm RIGHT và LEN để trích xuất các ký tự bên phải từ chuỗi sau dấu cách đầu tiên.

Macro được viết. Bây giờ chúng ta chỉ cần chạy macro bằng cách sử dụng phím F5 .

Mã:

 Sub SplittingNames () Dim s As String Dim FirstSpace As Long Dim LastSPace As Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Chọn Selection.End (xlDown). Chọn LastRow = ActiveCell. Row For Row = 2 To LastRow s = Sheet1.Cells (Row, 2) .Value Column = 3 If s Like "* *" Then FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Row, Column) .Value = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1) .Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Column) .Value = s End If Next End Sub 

Chúng tôi có một kết quả bây giờ.


$config[zx-auto] not found$config[zx-overlay] not found