Puoi fare espressioni regolari in Excel senza VBScript?


22

Sto cercando una funzione di Excel che posso mettere in una cella per fare una ricerca regex del contenuto di un'altra cella. C'è qualcosa disponibile per fare questo? Preferirei non dover aggiungere VB Script al foglio di calcolo per questo perché posso codificare una soluzione più velocemente. È solo che la soluzione più veloce sarebbe una funzione. Non riesco a trovarne uno, però. Quindi forse non c'è niente.

Qualcuno sa?

Risposte:


12

Puoi semplicemente aggiungere un riferimento a "Microsoft VBScript Regular Expressions 5.5" nel VBE per esporre le funzioni regex di VBScript.dll a Excel. Scrivere una semplice funzione regex è quindi banale, ad es

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

Puoi spiegare come aggiungere un riferimento?
Chris Walsh,


3

MoreFunc.xll è un componente aggiuntivo gratuito con funzionalità Regex.

Esistono altri componenti aggiuntivi di terze parti che possono eseguire anche Regex.

Non ci sono vere funzioni native del foglio di lavoro per farlo, ma se hai una ricerca specifica da fare puoi probabilmente usare altre funzioni per fare il lavoro.


Grazie per la conferma. Ho trovato quella biblioteca, ma speravamo di avere qualcosa che non ci richiedesse di distribuire anche una biblioteca.
Erick Robertson,

@Erick, sì, odio aggiungere addin ai miei fogli di calcolo, un grande dolore per tenerne traccia. A meno che non sia necessaria la completa flessibilità di regex, probabilmente si può fare il lavoro con altre funzioni. Ci sono molti trucchi in Excel. Pubblica richieste specifiche qui.
Lance Roberts,

2

Ecco una funzione che fornisce il numero di corrispondenze di espressioni regolari all'interno di una determinata cella:

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

(Richiede l'aggiunta di un riferimento a 'Microsoft VBScript Regular Expressions 5.5' - basta andare su 'Strumenti' -> 'Riferimenti' dall'editor VBA e selezionare la casella di controllo per quel riferimento.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.