VBA InStrRev - Como usar a função InStrRev do Excel VBA?

Excel VBA INSTRREV

A função VBA INSTRREV , como significa 'In String Reverse' , retorna a posição da primeira ocorrência de uma string de pesquisa (substring) em outra string, começando do final da string (da direita para a esquerda) a partir da qual estamos procurando uma string pesquisável.

A função INSTRREV começa a pesquisar a string pesquisável do final da string na qual precisamos descobrir, mas conta a posição desde o início. Há mais uma Função VBA INSTR (significa 'In String' ) que também procura uma string em outra string e retorna a posição, mas essa função inicia a pesquisa do início da string a partir da qual procuramos uma string pesquisável.

INSTRREV e INSTR , ambos são função VBA String / Text incorporada do MS Excel. Podemos usá-los ao escrever qualquer macro no Editor do Microsoft Visual Basic.

Sintaxe

Como podemos ver na imagem acima, existem 2 argumentos obrigatórios e 2 opcionais.

  • StringCheck As String: Este é o argumento obrigatório. Precisamos fornecer a expressão de string que está sendo pesquisada.
  • StringMatch As String: Este argumento também é necessário. Precisamos especificar a expressão de string que está sendo pesquisada.
  • Start As Long = -1: Este é um argumento opcional. Especificamos a expressão numérica. Por padrão, leva -1, o que significa que a pesquisa começa na posição do último caractere. Se especificarmos qualquer valor positivo como 80, ele começa a pesquisar a partir do final da string nesses 80 caracteres à esquerda.
  • Compare As VbCompareMethod = vbBinaryCompare As Long: Este argumento é opcional.

Podemos especificar os seguintes valores para este argumento.

Valores Retornados

  1. A função INSTRREV retorna 0 se a verificação da string tiver comprimento zero ou a correspondência da string não for encontrada ou o argumento 'iniciar' > comprimento da correspondência da string .
  2. Esta função retorna 'Nulo' se uma verificação de string ou correspondência de string for 'Nulo'.
  3. Se a correspondência da string tiver comprimento zero, a função retorna ao início .
  4. Se uma correspondência de string for encontrada em uma verificação de string , a função retornará a posição em que a correspondência foi encontrada.

Como usar a função VBA INSTRREV?

Suponha que temos dados para nomes de filmes e seus diretores. Queremos dividir os nomes dos diretores.

Temos dados em 1201 linhas. Se fizermos essa tarefa manualmente, vai demorar muito.

Para fazer o mesmo, usaremos o código VBA. As etapas são:

  • Precisamos clicar no comando 'Visual Basic' disponível no grupo 'Código' na guia 'Desenvolvedor' , ou podemos pressionar Alt + F11 para abrir o editor visual basic.
  • Vamos inserir um módulo usando o menu 'Inserir' .
  • Vamos criar uma sub-rotina chamada 'SplittingNames.'
  • Precisamos de 6 variáveis ​​- uma para armazenar os valores das células, que iremos manipular. Segundo para armazenar a posição do primeiro espaço na string, terceiro para armazenar a posição do último espaço na string, quarto para armazenar o número da última linha, quinto e sexto para linha e coluna, que usaremos para imprimir os valores adjacentes células.
  • Para descobrir a última linha usada na planilha, precisamos usar o código a seguir.

Este código selecionará primeiro a célula B1 e então selecionará a última célula usada na mesma coluna, e então atribuímos o número da linha da célula à variável 'LastRow'.

  • Agora, para manipular todas as células na coluna B, executaremos um loop 'for' .
  • Armazenaremos o valor das células da coluna B da linha 2 à linha 1201 uma a uma na variável 's' para manipulá-las.
  • Precisamos definir o valor da variável 'Coluna' para 3, pois precisamos escrever os nomes das divisões em C ( coluna) e uma coluna adiante.
  • Se a string for apenas uma palavra, isso significa que não há espaço na string, então queremos a própria string como saída. Para isso, especificaremos a condição usando 'declaração If e Else' com um sinal de asterisco (denotando um ou mais caracteres) da seguinte maneira:
  • Se houver espaço na string, queremos dividir a string. Para fazer o mesmo, usamos as funções INSTR e INSTRREV para descobrir a posição do primeiro e da última posição do espaço, respectivamente. Isso nos ajudará a encontrar a primeira palavra e a última palavra na string, respectivamente.

A função INSTR assume o argumento conforme abaixo:

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 Coluna As Long Sheet1.Range ("B1"). Selecione Selection.End (xlDown) .Selecione 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, Coluna) .Value = s End If Next End Sub

Temos um resultado agora.

Artigos interessantes...