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

22

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

Quelqu'un sait?

Erick Robertson
la source

Réponses:

12

Vous pouvez simplement ajouter une référence à «Microsoft VBScript Regular Expressions 5.5» dans le VBE pour exposer les fonctions d'expression régulière VBScript.dll à Excel. L'écriture d'une fonction regex simple est alors triviale, par exemple

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
la source
Pouvez-vous expliquer comment vous ajoutez une référence?
Chris Walsh
7

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

jdotjdot
la source
Cela fonctionne très bien (j'utilise Excel 2013)
Sébastien
3

MoreFunc.xll est un complément gratuit qui a la fonctionnalité Regex.

Il existe d'autres compléments tiers qui peuvent également faire Regex.

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

Lance Roberts
la source
Merçi pour la confirmation. J'ai trouvé cette bibliothèque, mais nous espérions avoir quelque chose qui ne nous obligerait pas à distribuer une bibliothèque aussi.
Erick Robertson
@Erick, oui, je déteste ajouter des compléments à mes feuilles de calcul, une grande douleur pour les garder en mémoire. Sauf si vous avez besoin d'une flexibilité regex complète, vous pouvez probablement faire le travail avec d'autres fonctions. Il y a beaucoup d'astuces dans Excel. Postez des demandes spécifiques ici.
Lance Roberts
2

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 pour cette référence.)

jake
la source