web-dev-qa-db-fra.com

Pouvez-vous faire des expressions régulières dans Excel sans VBScript?

Je cherche une fonction Excel que je peux mettre dans une cellule pour effectuer une recherche régulière du contenu d'une autre cellule. Y at-il quelque chose de disponible pour faire cela? Je préférerais ne pas avoir à ajouter VB Script à la feuille de calcul car je peux coder en dur une solution plus rapidement. C'est simplement que la solution la plus rapide serait une fonction. Je ne peux pas en trouver un, cependant. Alors peut-être qu'il n'y a rien.

Quelqu'un sait?

22
Erick Robertson

Vous pouvez simplement ajouter une référence à 'Microsoft VBScript Regular Expressions 5.5' dans le VBE pour exposer les fonctions de regex VBScript.dll à Excel. L’écriture d’une simple fonction regex est alors triviale, par ex.

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
12
Lunatik

Le paquet .xla sur de ce site a très bien fonctionné pour moi.

7
jdotjdot

MoreFunc.xll est un add-in gratuit doté de la fonctionnalité Regex.

Il existe d’autres compléments tiers qui peuvent également utiliser Regex.

Il n'y a pas de véritables fonctions de feuille de travail natives pour le faire, mais si vous avez une recherche spécifique à faire, vous pouvez probablement utiliser d'autres fonctions pour faire le travail.

3
Lance Roberts

Voici une fonction qui donne le nombre de correspondances d'expressions régulières dans une cellule particulière:

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

(Nécessite l'ajout d'une référence à "Microsoft VBScript Regular Expressions 5.5" - allez simplement dans "Outils" -> "Références" dans l'éditeur VBA et cochez la case correspondant à cette référence.)

2
jake