VBA INSTRREV

Excel VBA INSTRREV

Fungsi VBA INSTRREV , singkatan dari 'In String Reverse' , mengembalikan kedudukan kejadian pertama rentetan carian (substring) dalam rentetan lain, bermula dari akhir 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 kedudukan 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, diperlukan -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

  1. Fungsi INSTRREV mengembalikan 0 jika semakan tali  panjang sifar atau padanan tali  tidak dijumpai atau argumen 'start' > panjang padanan rentetan .
  2. Fungsi ini mengembalikan 'Null' jika rentetan cek  atau string match  adalah 'Null' .
  3. Sekiranya padanan tali panjang sifar, fungsi akan kembali ke permulaan .
  4. Sekiranya pencocokan tali dijumpai dalam pemeriksaan rentetan , maka fungsi mengembalikan kedudukan di mana pencocokan dijumpai.

Bagaimana Menggunakan Fungsi VBA INSTRREV?

Anda boleh memuat turun Templat VBA INSTRREV Excel ini di sini - Templat VBA INSTRREV Excel

Katakanlah, kami 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 boleh menekan Alt + F11 untuk membuka editor asas 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 rentetan, 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 dalam sel yang berdekatan.

  • 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 dalam 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 pemboleh ubah 'Column' menjadi 3 kerana kita perlu menuliskan nama-nama split di C (3rd Column) dan kolum seterusnya.

  • Sekiranya rentetan hanya satu kata yang bermaksud tidak ada ruang dalam rentetan maka kita 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. Untuk 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 mencari kata pertama dan kata terakhir dalam rentetan masing-masing.

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 KIRI vba 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) Else Sheet1. Sel (Baris, baris) Lajur). Nilai = s Akhir Sekiranya Sub Akhir Akhir 

Kami mempunyai hasil sekarang.