Como retornar todas as correspondências de um texto inserido com um padrão regex no Excel
dezembro 30, 2022Graças ao Visual Basic você pode facilitar seu tempo de trabalho no Excel, já que através deste programa você pode criar macros e funções personalizadas. Com as mesmas macros, você pode importar nomes de arquivos ou copiar dados de uma planilha para outra.
Qual é a função do padrão de expressão regular que se encarregará de retornar todas as correspondências de um texto?
O primeiro passo é criar o objeto de expressão regular como uma função chamada “Matches” na qual, por meio de parâmetros, será encontrado um valor na célula em que a pessoa escreveu.
O objetivo através de um código de macro, este retorna uma mensagem com as correspondências encontradas no texto separadas por uma disjunção.
Codificação para criar o padrão da função
É claro que ficou estabelecido que o padrão de expressão regular que se criará a seguir é uma função que se encarregará de validar os textos inseridos na planilha.
Acesse a aba “ Desenvolvedor ” e clique em “ Visual Basic ” para criar um primeiro “ Módulo ” que conterá o código da função.
Você vai começar definindo o início da função, colocando o nome das correspondências e entre parênteses você deve colocar os parâmetros de valor do texto inserido na célula como uma string.
Correspondências de função pública (célula ByVal como String)
Uma vez feito isso, você pode começar a escrever o objeto de expressão regular que irá definir o padrão de análise, dando a ele o nome (SS) que você quiser.
Definir SS = CreateObject (“VBScript.RegExp”)
Inicie uma variável que você nomeará como texto para estabelecer todas as correspondências que serão encontradas ao executar a macro , que será do tipo string e será iniciada em 0.
Dim text as String
Texto = “”
Em seguida, ele estabelece as propriedades da expressão regular, onde todos serão colocados como verdadeiros e o padrão serão as letras de a a z acompanhadas do símbolo de mais ” + ” para também analisar qualquer outro texto dentro da string.
Com SS
.Global = True
.Multiline = True
.IgnoreCase = True
.Padrão = ”[az] +”
Terminar com
Se houver correspondência no texto, deve-se extraí-la com execute , ou então exibirá uma mensagem informando que nada foi encontrado.
No caso de encontrar conteúdo, você deve definir uma variável que nomeará como encontrada para colocar o valor da célula correspondente.
Deve-se notar que cada correspondência encontrada será percorrida com uma variável auxiliar determinada neste exemplo como ” x ” em uma estrutura ” Para cada “.
Se SS.test (célula) Então
Definir encontrado = SS.Executar (célula)
Para cada x In encontrado
Aux = x
Se text = ”” Então
Texto = aux
Senão
Texto = texto + ”| “+ Aux
Fim se
Próximo x
Por fim, atribui que o valor do objeto da expressão regular é o texto que será inserido na célula ou estabelece a mensagem se nenhuma correspondência for encontrada, para encerrar a função.
Matches = text
Senão
Correspondências = ”Nenhuma correspondência encontrada”
Fim se
Função Final
Código de resultado
Para retornar todas as correspondências de um texto, um novo ” Módulo ” é criado para estabelecer um código que mostrará o resultado da análise do conteúdo da célula, funcionando de acordo com o padrão criado anteriormente.
Para isso, duas variáveis chamadas valor e string do tipo string serão adicionadas às quais os valores da função serão atribuídos.
Sub correspondências ()
Valor dim, string como string
Value = ActiveCell.Value
String = corresponde (valor)
String MsgBox
End Sub
Desta forma, a função e a macro foram concluídas, que você pode testar adicionando conteúdo a uma célula com diferentes símbolos e acessando o botão ” Macros ” para pressionar ” Executar ” na função.
Concluirá exibindo uma janela com as correspondências que estão dentro dos parâmetros estabelecidos, separadas umas das outras pelo símbolo de disjunção.
Se você trabalha com este programa, pode obter um erro em algum ponto , mas isso é fácil de resolver.