VBA INSTRREV

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.
  • Inizia finché = -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 torna 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 partita.

Come utilizzare la funzione VBA INSTRREV?

Puoi scaricare questo modello Excel VBA INSTRREV qui - Modello Excel VBA INSTRREV

Supponiamo di avere dati per i nomi dei film e i 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. Uno 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 nelle celle adiacenti.

  • 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 e 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 per una nella variabile 's' per manipolarle.

  • Dobbiamo impostare il valore della variabile "Colonna" su 3 poiché dobbiamo scrivere i nomi delle divisioni in C (terza colonna) e una colonna in avanti.

  • Se la stringa è solo una parola, 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:

Dettagli argomento

  • Inizio: da quale posizione iniziare.
  • String1: dobbiamo fornire l'espressione stringa da cercare.
  • String2: è necessario specificare l'espressione stringa da cercare.

Rispetto a VbCompareMethod: specifica del metodo di confronto. Per impostazione predefinita, è il confronto binario.

  • Dobbiamo usare il VBA SINISTRA funzione per estrarre sinistra caratteri dalla stringa. Abbiamo usato "Last Space-1" per ottenere i caratteri a sinistra prima dell'ultimo spazio.

Dobbiamo usare le funzioni RIGHT e LEN per estrarre i caratteri giusti dalla stringa dopo il primo spazio.

La macro è scritta. Ora dobbiamo solo eseguire la macro utilizzando il tasto F5 .

Codice:

 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.