VBA InStrRev - Come utilizzare la funzione InStrRev di Excel VBA?

Excel VBA INSTRREV

La funzione VBA INSTRREV , che sta per 'In String Reverse' , restituisce la posizione della prima occorrenza di una stringa di ricerca (sottostringa) in un'altra stringa, a partire dalla fine della stringa (da destra a sinistra) da cui stiamo cercando una stringa ricercabile.

La funzione INSTRREV inizia a cercare la stringa ricercabile dalla fine della stringa in cui abbiamo bisogno di trovare, ma conta la posizione dall'inizio. C'è un'altra funzione INSTR VBA (sta per 'In String' ) che cerca anche una stringa in un'altra stringa e restituisce la posizione, ma questa funzione avvia la ricerca dall'inizio della stringa da cui cerchiamo la stringa ricercabile.

INSTRREV e INSTR , entrambi sono funzioni VBA String / Text incorporate di MS Excel. Possiamo usarli durante la scrittura di qualsiasi macro in Microsoft Visual Basic Editor.

Sintassi

Come possiamo vedere nell'immagine sopra, ci sono 2 argomenti obbligatori e 2 opzionali.

  • StringCheck As String: questo è l'argomento richiesto. Dobbiamo fornire un'espressione di stringa da cercare.
  • StringMatch As String: anche questo argomento è obbligatorio. È necessario specificare l'espressione stringa da cercare.
  • Start As Long = -1: questo è un argomento opzionale. Specifichiamo l'espressione numerica. Per impostazione predefinita, accetta -1, il che significa che la ricerca inizia dalla posizione dell'ultimo carattere. Se specifichiamo un valore positivo come 80, inizia la ricerca dalla fine della stringa in quegli 80 caratteri a sinistra.
  • Confronta come VbCompareMethod = vbBinaryCompare As Long: questo argomento è facoltativo.

Possiamo specificare i seguenti valori per questo argomento.

Valori restituiti

  1. La funzione INSTRREV restituisce 0 se il controllo della stringa è di lunghezza zero o la corrispondenza della stringa non viene trovata o l' argomento 'inizio' > lunghezza della corrispondenza della stringa .
  2. Questa funzione restituisce "Null" se un controllo di stringa o una corrispondenza di stringa è "Null".
  3. Se la corrispondenza della stringa è di lunghezza zero, la funzione ritorna all'inizio .
  4. Se una partita di stringa si trova all'interno di un controllo di stringa , quindi la funzione restituisce la posizione in cui si trova la partita.

Come utilizzare la funzione VBA INSTRREV?

Supponiamo di avere dati sui nomi dei film e sui loro registi. Vogliamo dividere i nomi dei registi.

Abbiamo dati in 1201 righe. Se eseguiamo questa operazione manualmente, ci vorrà molto tempo.

Per fare lo stesso, useremo il codice VBA. I passaggi sono:

  • Dobbiamo fare clic sul comando "Visual Basic" disponibile nel gruppo "Codice" nella scheda "Sviluppatore" , oppure possiamo premere Alt + F11 per aprire l'editor di visual basic.
  • Inseriremo un modulo utilizzando il menu "Inserisci" .
  • Creeremo una subroutine denominata "SplittingNames".
  • Abbiamo bisogno di 6 variabili, una per memorizzare i valori delle celle, che manipoleremo. Secondo per memorizzare la posizione del primo spazio nella stringa, terzo per memorizzare la posizione dell'ultimo spazio nella stringa, quarto per memorizzare l'ultimo numero di riga, quinto e sesto per riga e colonna, che useremo per stampare i valori adiacenti cellule.
  • Per scoprire l'ultima riga utilizzata nel foglio, è necessario utilizzare il codice seguente.

Questo codice selezionerà prima la cella B1, quindi selezionerà l'ultima cella utilizzata nella stessa colonna, quindi assegneremo il numero di riga della cella alla variabile "LastRow".

  • Ora per manipolare tutte le celle nella colonna B, eseguiremo un ciclo "for" .
  • Memorizzeremo il valore delle celle della colonna B dalla riga 2 alla riga 1201 una alla volta nella variabile 's' per manipolarle.
  • Abbiamo bisogno di impostare il valore della variabile 'colonna' a 3, come abbiamo bisogno di scrivere i nomi di divisione in C (3 ° colonna) e una colonna in poi.
  • Se la stringa è solo una parola che significa che non c'è spazio nella stringa, allora vogliamo la stringa stessa come output. Per questo, specificheremo la condizione utilizzando "If and Else statement" con un asterisco (che denota uno o più caratteri) come segue:
  • Se c'è spazio nella stringa, allora vogliamo dividere la stringa. Per fare lo stesso, abbiamo usato la funzione INSTR e INSTRREV entrambe per trovare rispettivamente la prima posizione dello spazio e l'ultima posizione dello spazio. Ci aiuterà a trovare rispettivamente la prima e l'ultima parola nella stringa.

La funzione INSTR accetta l'argomento come di seguito:

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"). Selezionare Selection.End (xlDown) .Selezionare 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, Colonna) .Value = s End If Next End Sub

Ora abbiamo un risultato.

Articoli interessanti...