Excel VBA INSTRREV
Fungsi VBA INSTRREV , singkatan dari 'In String Reverse' , mengembalikan kedudukan kejadian rentetan carian pertama (substring) pada rentetan lain, bermula dari hujung rentetan (dari kanan ke kiri) dari mana kita cari rentetan yang boleh dicari.
Fungsi INSTRREV mula mencari rentetan yang dapat dicari dari hujung rentetan di mana kita perlu mencari tetapi mengira kedudukan dari awal. Terdapat satu lagi Fungsi INSTR VBA (singkatan dari 'In String' ) yang juga mencari rentetan dalam rentetan lain dan mengembalikan kedudukannya, tetapi fungsi ini memulakan pencarian dari awal rentetan dari mana kita mencari rentetan yang dapat dicari.
INSTRREV dan INSTR , kedua-duanya adalah fungsi String / Text VBA terbina dalam MS Excel. Kita boleh menggunakannya semasa menulis sebarang makro di Microsoft Visual Basic Editor.

Sintaks

Seperti yang dapat kita lihat pada gambar di atas, terdapat 2 argumen wajib dan 2 pilihan.
- StringCheck As String: Ini adalah hujah yang diperlukan. Kita perlu memberikan ungkapan rentetan yang sedang dicari.
- StringMatch As String: Hujah ini juga diperlukan. Kita perlu menentukan ungkapan rentetan yang dicari.
- Start As Long = -1: Ini adalah argumen pilihan. Kami menentukan ungkapan berangka. Secara lalai, ia memerlukan -1, yang bermaksud bahawa carian bermula pada kedudukan watak terakhir. Sekiranya kita menentukan nilai positif seperti 80, maka ia mula mencari dari hujung rentetan di 80 aksara kiri.
- Bandingkan Sebagai VbCompareMethod = vbBinaryCompare As Long: Hujah ini adalah pilihan.

Kami dapat menentukan nilai berikut untuk argumen ini.
Nilai Pulangan
- Fungsi INSTRREV mengembalikan 0 jika semakan tali panjang sifar atau padanan tali tidak dijumpai atau argumen 'start' > panjang padanan rentetan .
- Fungsi ini mengembalikan 'Null' jika periksa rentetan atau padanan rentetan adalah 'Null.'
- Sekiranya padanan tali panjang sifar, fungsi akan kembali ke permulaan .
- Sekiranya pencocokan tali dijumpai dalam pemeriksaan rentetan , maka fungsi mengembalikan kedudukan di mana pencocokan dijumpai.
Bagaimana Menggunakan Fungsi VBA INSTRREV?
Katakan kita mempunyai data untuk nama filem dan pengarahnya. Kami mahu memisahkan nama pengarah.

Kami mempunyai data dalam 1201 baris. Sekiranya kita melakukan tugas ini secara manual, ia memerlukan banyak masa.
Untuk melakukan perkara yang sama, kami akan menggunakan kod VBA. Langkahnya adalah:
- Kita perlu mengklik Perintah 'Visual Basic' yang terdapat dalam Kumpulan 'Code' di Tab 'Developer' , atau kita dapat menekan Alt + F11 untuk membuka editor dasar visual.

- Kami akan memasukkan modul menggunakan menu 'Insert' .

- Kami akan membuat subrutin bernama 'SplittingNames.'

- Kita memerlukan 6 pemboleh ubah-satu untuk menyimpan nilai sel, yang akan kita manipulasi. Kedua untuk menyimpan kedudukan ruang pertama dalam tali, ketiga untuk menyimpan kedudukan ruang terakhir dalam tali, keempat untuk menyimpan nombor baris terakhir, kelima dan keenam untuk baris dan lajur, yang akan kita gunakan untuk mencetak nilai di sebelah sel.

- Untuk mengetahui baris terakhir yang digunakan dalam helaian, kita perlu menggunakan kod berikut.

Kod ini akan memilih sel B1 terlebih dahulu dan kemudian memilih sel yang terakhir digunakan pada lajur yang sama, dan kemudian kita menetapkan nombor baris sel ke pemboleh ubah 'LastRow'.
- Sekarang untuk memanipulasi semua sel di lajur B, kita akan menjalankan gelung 'untuk' .

- Kami akan menyimpan nilai sel lajur B dari baris 2 hingga baris 1201 satu demi satu pemboleh ubah dalam memanipulasinya.

- Kita perlu menetapkan nilai yang berubah-ubah 'Lajur' kepada 3 seperti yang kita perlu menulis nama-nama perpecahan dalam C (3 rd Column) dan lajur yang seterusnya.

- Sekiranya rentetan hanya satu kata yang bermaksud tidak ada ruang dalam rentetan, maka kami ingin string itu sendiri sebagai output. Untuk ini, kami akan menentukan syarat menggunakan 'Pernyataan If and Else' dengan tanda asterisk (menunjukkan satu atau lebih aksara) seperti berikut:

- Sekiranya terdapat ruang dalam rentetan, maka kami ingin memisahkan rentetan. Melakukan perkara yang sama, kami telah menggunakan Instr dan INSTRREV fungsi kedua-dua untuk mengetahui kedudukan ruang pertama dan kedudukan ruang lepas, masing-masing. Ini akan membantu kita untuk mencari kata pertama dan kata terakhir dalam rentetan.

Fungsi INSTR mengambil hujah seperti di bawah:

Perincian Hujah
- Mula: Dari kedudukan mana untuk bermula.
- String1: Kita perlu memberikan ungkapan string yang sedang dicari.
- String2: Kita perlu menentukan ekspresi rentetan yang dicari.
Dibandingkan sebagai VbCompareMethod: Menentukan kaedah Membanding. Secara lalai, ia adalah perbandingan binari.
- Kita perlu menggunakan fungsi VBA LEFT untuk mengekstrak watak kiri dari rentetan. Kami telah menggunakan 'Last Space-1' untuk mendapatkan watak kiri sebelum ruang terakhir.
Kita perlu menggunakan fungsi KANAN dan LEN untuk mengekstrak watak yang betul dari rentetan selepas ruang pertama.

Makro ditulis. Sekarang kita hanya perlu menjalankan makro menggunakan kunci F5 .
Kod:
Sub SplittingNames () Dim s Sebagai String Dim FirstSpace As Long Dim LastRace Long Dim LastRow As Long Dim Row As Long Dim Column As Long Sheet1.Range ("B1"). Pilih Selection.End (xlDown). Pilih LastRow = ActiveCell Row For Row = 2 To LastRow s = Sheet1.Cells (Row, 2). Value Column = 3 If s Like "* *" Kemudian 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) Helse Lain1. Sel (Row, Lajur). Nilai = s Akhir Sekiranya Sub Akhir Akhir
Kami mempunyai hasil sekarang.
