¿Se pueden hacer expresiones regulares en Excel sin VBScript?


22

Estoy buscando una función de Excel que pueda poner en una celda para hacer una búsqueda de expresiones regulares del contenido de otra celda. ¿Hay algo disponible para hacer esto? Preferiría no tener que agregar VB Script a la hoja de cálculo para esto porque puedo codificar una solución más rápido. Es solo que la solución más rápida sería una función. Sin embargo, no puedo encontrar uno. Entonces tal vez no haya nada.

¿Nadie sabe?

Respuestas:


12

Simplemente puede agregar una referencia a 'Microsoft VBScript Regular Expressions 5.5' en el VBE para exponer las funciones de expresión regular VBScript.dll a Excel. Escribir una función regex simple es trivial, p. Ej.

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

¿Puedes explicar cómo agregas una referencia?
Chris Walsh


3

MoreFunc.xll es un complemento gratuito que tiene la funcionalidad Regex.

Hay algunos otros complementos de terceros que también pueden hacer Regex.

No hay verdaderas funciones nativas de hoja de trabajo para hacerlo, pero si tiene que hacer una búsqueda específica, probablemente pueda usar otras funciones para hacer el trabajo.


Gracias por la confirmación. Encontré esa biblioteca, pero esperábamos tener algo que no nos obligara a distribuir una biblioteca también.
Erick Robertson el

@Erick, sí, odio agregar complementos a mis hojas de cálculo, un gran dolor hacer un seguimiento de ellos. A menos que necesite una flexibilidad completa de expresiones regulares, probablemente pueda hacer el trabajo con otras funciones. Hay muchos trucos en Excel. Publique solicitudes específicas aquí.
Lance Roberts el

2

Aquí hay una función que da el número de coincidencias de expresiones regulares dentro de una celda particular:

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

(Requiere agregar una referencia a 'Microsoft VBScript Regular Expressions 5.5' - solo vaya a 'Herramientas' -> 'Referencias' desde el editor de VBA y marque la casilla de verificación para esa referencia).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.