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

22

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 algo disponível para fazer isso? Eu preferiria não precisar adicionar o VB Script à planilha para isso, porque 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.

Ninguem sabe?

Erick Robertson
fonte

Respostas:

12

Você pode simplesmente adicionar uma referência a 'Microsoft VBScript Regular Expressions 5.5' no VBE para expor as funções de regex do VBScript.dll ao Excel. Escrever uma função regex simples é 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
Lunatik
fonte
Você pode explicar como você adiciona uma referência?
21418 Chris Walsh
7

O pacote .xla neste site funcionou muito bem para mim.

jdotjdot
fonte
Ele funciona muito bem, na verdade (estou usando o Excel 2013)
Sébastien
3

MoreFunc.xll é um complemento gratuito que possui a funcionalidade Regex.

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

Não há funções de planilha nativas verdadeiras para fazê-lo, mas se você tiver uma pesquisa específica para fazer, provavelmente poderá usar outras funções para concluir o trabalho.

Lance Roberts
fonte
Obrigado pela confirmação. Encontrei essa biblioteca, mas esperávamos ter algo que não exigisse a distribuição de uma biblioteca também.
Erick Robertson
@Erick, sim, eu odeio adicionar suplementos às minhas planilhas, uma grande dor para acompanhá-los. A menos que você precise de flexibilidade completa de regex, provavelmente você pode fazer o trabalho com outras funções. Existem muitos truques no Excel. Poste solicitações específicas aqui.
Lance Roberts
2

Aqui está uma função que fornece o número de correspondências de expressões regulares em 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 a adição de uma referência a 'Microsoft VBScript Regular Expressions 5.5' - basta ir em 'Ferramentas' -> 'Referências' no editor do VBA e marque a caixa de seleção para essa referência.)

Jake
fonte