Você pode fazer expressões regulares no Excel sem o VBScript?

20

Estou procurando uma função do Excel que eu possa colocar em uma célula para fazer uma pesquisa regex do conteúdo de outra célula. Existe alguma coisa disponível para fazer isso? Eu prefiro não ter que adicionar o VB Script à planilha para isso porque eu posso codificar uma solução mais rapidamente. É só que a solução mais rápida seria uma função. Eu não consigo encontrar um, no entanto. Então talvez não haja nada.

Alguém sabe?

    
por Erick Robertson 26.08.2010 / 16:39

4 respostas

12

Você pode simplesmente adicionar uma referência ao 'Microsoft VBScript Regular Expressions 5.5' no VBE para expor as funções de regex do VBScript.dll para o Excel. Escrever uma função simples de regex é então trivial, por exemplo

Public Function emailCheck(rawEmail As String) As Boolean
    Dim reg As New RegExp
    reg.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,4}$"
    emailCheck = False
    If reg.Test(rawEmail) Then
        emailCheck = True
    End If
End Function
    
por 01.09.2010 / 13:43
7

O pacote .xla em este site funcionou muito bem para mim.

    
por 07.05.2013 / 17:03
3

MoreFunc.xll é um suplemento gratuito que tem a funcionalidade Regex.

Existem alguns outros suplementos de terceiros que também podem fazer o Regex.

Não há funções de planilha nativa verdadeira para fazer isso, mas se você tiver uma pesquisa específica para fazer, provavelmente poderá usar outras funções para realizar o trabalho.

    
por 26.08.2010 / 17:00
2

Aqui está uma função que fornece o número de correspondências de expressões regulares dentro de uma célula específica:

Public Function regexCount(regex As String, ref As Range) As Integer
    Dim reg As New RegExp
    reg.Global = True
    reg.Pattern = regex
    regexCount = reg.Execute(ref.Value).Count
End Function

(Requer adicionar uma referência a 'Microsoft VBScript Regular Expressions 5.5' - basta acessar 'Ferramentas' - > 'Referências' no editor do VBA e marcar a caixa de seleção para essa referência.)

    
por 13.12.2013 / 03:01