Veja como usar a função Regex no Excel à partir do VBA para retornar expressões regulares de células.
Expressões regulares são padrões de strings dentro de outra string.
Por exemplo, digamos que queira extrair somente o e-mail do texto: O meu e-mail é Vendas.Lojas123@acme.com.br, aguardo seu contato.
Para extrair o e-mail de textos como este ou qualquer texto podemos fazer uso de expressões regulares, este tipo de funcionalidade está presente em várias linguagens e podemos usá-la também no VBA.
Como Criar uma função Regex VBA no Excel
O Regex não está entre as funções do Excel, por isso iremos colocar no VBA esta função própria.
Esta função ficará disponível apenas na planilha que você colocar, ou senão pode ser instalada na planilha pessoal, que pode ver conforme no link abaixo também.
Pressione ALT+F11 ou siga o procedimento Habilitar Guia Desenvolvedor.
No Visual Basic Editor clique na guia Ferramentas->Referências
Nas referências marque a biblioteca Microsoft VBScript Regular Expressions 5.5.
Esta é a biblioteca das expressões regulares do VBScript.
Feito isso já podemos colocar a função.
Clique em Inserir->Módulo e no módulo incluso cole o seguinte texto, que é referente a função Regex.
Função criada por Patrick Bökler no link: https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops
Function regex(strInput As String, matchPattern As String, Optional ByVal outputPattern As String = "$0") As Variant
Dim inputRegexObj As New VBScript_RegExp_55.RegExp, outputRegexObj As New VBScript_RegExp_55.RegExp, outReplaceRegexObj As New VBScript_RegExp_55.RegExp
Dim inputMatches As Object, replaceMatches As Object, replaceMatch As Object
Dim replaceNumber As Integer
With inputRegexObj
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = matchPattern
End With
With outputRegexObj
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = "\$(\d+)"
End With
With outReplaceRegexObj
.Global = True
.MultiLine = True
.IgnoreCase = False
End With
Set inputMatches = inputRegexObj.Execute(strInput)
If inputMatches.Count = 0 Then
regex = False
Else
Set replaceMatches = outputRegexObj.Execute(outputPattern)
For Each replaceMatch In replaceMatches
replaceNumber = replaceMatch.SubMatches(0)
outReplaceRegexObj.Pattern = "\$" & replaceNumber
If replaceNumber = 0 Then
outputPattern = outReplaceRegexObj.Replace(outputPattern, inputMatches(0).Value)
Else
If replaceNumber > inputMatches(0).SubMatches.Count Then
regex = CVErr(xlErrValue)
Exit Function
Else
outputPattern = outReplaceRegexObj.Replace(outputPattern, inputMatches(0).SubMatches(replaceNumber - 1))
End If
End If
Next
regex = outputPattern
End If
End Function
Com isso nós já temos a função regex pronta para você poder utilizar.
Como Usar a Função Regex no Excel
Veja algumas sintaxes:
Expressão | Explicação |
. | Qualquer caracter |
* | Qualquer quantidade |
[0-9] | Qualquer número |
[0-9]{7} | Conjunto de 7 números |
[0-9]+ | Conjunto numérico com qualquer quantidade |
[0-9]+:[0-9]+ | Exemplo de expressão para extrair horário |
\w | Qualquer caractere alfabético |
[a-z] | Qualquer letra minúscula do alfabeto |
[A-Z] | Qualquer letra maiúscula do alfabeto |
\d | Qualquer dígito decimal entre 0 e 9 |
\r | Representa a quebra de linha |
{n} | Repete uma determinada quantidade de vezes |
Extrair o usuário: O usuário JOAQUIM123465 está ativo | [\w]*[0-9]+ :JOAQUIM123465 |
Extrair o valor: Vendemos no total hoje 1565,99 litros de desinfetante | [0-9.,]+ :1565,99 |
Extrair o e-mail: teste Vendas123456.Teste@gmail.com abcde | \w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)* : Vendas123456.Teste@gmail.com |
Extrair o conjunto numérico: asdfasdf 1234678970 testes teste | [0-9]+ |
Extrair a hora: agora são 09:35 h da tarde | [0-9]+:[0-9]+ :09:35 |
^ | Operador não, por exemplo [^0-9], um caractere não numérico |
Há ainda vários outros operadores para expressões regulares que podem ser encontradas em diversos sites.
Exemplo Prático com Regex no Excel
No exemplo abaixo temos a necessidade de extrair o número do processo.
Ele segue um padrão de números, traço e pontuações e constam em diferentes partes dos textos.
Para extrair estes dados nós utilizamos a seguinte expressão regular REGEX: [0-9]{7}-[0-9]{2}.[0-9]{4}.[0-9]{1}.[0-9]{2}.[0-9]{4}
Nele temos o uso de [0-9]{7}, isso significa 7 caracteres numéricos, após ele temos o caracter “-” e o caracter “.” e outras cadeiras numéricas.
O resultado então é a extração exata dos caracteres, por exemplo: 0000403-07.5050.8.56.0005.
Download d
Download da Planilha de Regex Excel – Expressões Regulares
Realize o download da planilha com o Regex instalado no Excel e vários exemplos neste botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.