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

Mục lục

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 một 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 được tích hợp sẵn trong 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 xác đị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ó nhận -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 khớp chuỗi'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 quá trình 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?

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, 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ữ 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, chúng tôi sẽ sử dụng để in các giá trị trong liền kề tế bào.
  • Để 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, 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ưu lần lượt giá trị của 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 'Cột' thành 3 vì chúng ta cần viết các tên phân tách 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í khoảng trắng 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:

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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ờ.

thú vị bài viết...