VBA INSTRREV

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 INSTR vba (significa 'In String' ) que também procura por 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 por string pesquisável.

INSTRREV e INSTR , ambos são funções VBA String / Text embutidas 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 retornará 0 se a verificação da string  tiver comprimento zero ou a correspondência da string  não for encontrada ou argumento 'start' > 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?

Você pode baixar este modelo VBA INSTRREV Excel aqui - Modelo VBA INSTRREV Excel

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 levar muito tempo.

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. Um 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 nas células adjacentes.

  • 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 (3ª 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 forma:

  • Se houver espaço na string, queremos dividi-la. Para fazer o mesmo, usamos as funções INSTR e INSTRREV para descobrir a posição do primeiro espaço 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:

Detalhes do argumento

  • Iniciar: a partir de qual posição começar.
  • String1: Precisamos fornecer a expressão string que está sendo pesquisada.
  • String2: Precisamos especificar a expressão de string que está sendo pesquisada.

Comparado as VbCompareMethod: Especificando o método de comparação. Por padrão, é a comparação binária.

  • Precisamos usar a função vba LEFT para extrair os caracteres à esquerda da string. Usamos 'Last Space-1' para obter os caracteres à esquerda antes do último espaço.

Precisamos usar as funções RIGHT e LEN para extrair os caracteres corretos da string após o primeiro espaço.

Macro está escrito. Agora só precisamos executar a macro usando a tecla F5 .

Código:

 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.