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?

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

Pouvez-vous expliquer comment vous ajoutez une référence?
Chris Walsh


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.


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.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.