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
- 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 .
- Esta função retorna 'Nulo' se uma verificação de string ou correspondência de string for 'Nulo' .
- Se a correspondência da string tiver comprimento zero, a função retorna ao início .
- 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 ExcelSuponha 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.