Вы находитесь на странице: 1из 16

201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

A u t o matizacin
Excel Buscar en este sitio

Pgina principal Talleres Ricardo Villafaa Figueroa

Pgina principal
Acceder al editor de
Macros para manejar Expresiones
Visual Basic para
Aplicaciones (VBA)
Regulares
Acceso a las
Propiedades de los
objetos
Acceso a los Mtodos de
Contenidos
los Objetos
Activar la ficha del 1 Presentacin
programador 2 Accediendo al objeto de Expresiones Regulares
Anlisis de datos - 3 Mtodos del objeto Regular Expressions (regExp)
Grficas dinmicas 4 Propiedades del objeto Regular Expressions (regExp)
Cambiar los colores del 5 El objeto de coleccin de patrones (MatchCollection)
fondo de una celda
6 El objeto de coincidencias (Match)
Ciclo Do While...Loop 7 Tabla de patrones en las expresiones regulares
Ciclo Do...Loop Until 8 Macro para reemplazar textos utilizando Expresiones Regulares
Ciclo For Each...Next 9 Macro para localizar textos o patrones complejos dentro de una seleccin dada como entrada
Ciclo For...Next 10 Encontrar palabras completas con Expresiones Regulares
Definicin de funciones 11 Encontrar palabras separadas por espacios en blanco con Expresiones Regulares
Eliminar espacios 12 Encontrar dgitos con Expresiones Regulares
Filas y columnas vacas 13 Encontrar un nmero determinado de dgitos con Expresiones Regulares
Funciones de sumatorias 14 Encontrar palabras al principio del texto con Expresiones Regulares
y productos 15 Encontrar alternativas de texto con Expresiones Regulares
Funciones de texto
Funciones de texto en
VBA Excel
Funciones para el
manejo de colores de
una celda
Presentacin
Funciones para el
manejo de textos
Funciones para la El objeto RegExp (expresiones regulares) es una herramienta
limpieza de textos poderosa para buscar o reemplazar palabras o patrones complejos
Funciones que manejan dentro de un texto,
rangos como
Las expresiones regulares en s mismas forman un lenguaje de
argumentos
programacin. Es necesario conocer este lenguaje para sacar el
google1bb521775c3ea
mayor partido de este objeto. Aqu se muestran solamente
Importancia de la
Automatizacin en Excel ejemplos bsicos. Es necesario que el lector interesado busque
Macro para buscar en un una referencia ms detallada para el uso adecuado de las
texto una lista de expresiones regulares, por ejemplo, puede consultarExpresiones
palabras (funcin InStr) Regularesen la Wikipedia.
Macro para buscar en un Tambin es aconsejable para el principiante utilizar una
texto una lista de
herramienta comoPrueba de Expresiones Regularespara
palabras (operador Like)
familiarizarse en su sintaxis y en sus amplias posibilidades.
Macro para calcular
frecuencia de palabras
Macro para calcular
frecuencias utilizando Accediendo al objeto de Expresiones Regulares
dicccionarios
Macro para calcular
frecuencias utilizando En el editor de VBA de Excel acceda al objeto RegExp a travs
diccionarios deHerramientas => Referencias =>Microsoft VBScript Regular
Macro para combinar Expression 5.5
hojas
Macro para extraer
grupos de texto
utilizando Expresiones
Regulares
Macro para separar
palabras (utilizando
diferentes signos de
https://sites.google.com/site/automatizacionexcel/expresionesregulares 1/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel
diferentes signos de
puntuacin)
Macros para asignar
valores a una celda
Macros para asignar
valores a una celda
utilizando la propiedad
Offset
Macros para buscar
palabras en un texto
Macros para calcular
subtotales usando
diccionarios
Macros para cambiar las
propiedades de una
columna
Macros para comparar
dos rangos de valores
Macros para contar
celdas en blanco o con
datos
Macros para contar
objetos de una coleccin
Macros para contar y
sumar
Macros para contar y Mtodos del objeto Regular Expressions (regExp)
sumar condicionalmente
usando funciones de
Excel Execute. Es utilizado para extraer una palabra o patrn de un
Macros para convertir texto dado. Regresa una coleccin de los patrones encontrados.
textos a maysculas, Replace. Es utilizado para reemplazar una palabra o un patrn
minsculas y nombres dentro de un texto dado. El mtodo Replace necesita dos
propios
argumentos: el texto que se busca y el texto por el cual va a ser
Macros para crear
grficas
reemplazado.
Macros para el anlisis
Test. Es utilizado para probar si una palabra o un patrn se
de datos - Auto filtros encuentra en un texto dado. El mtodo regresa verdadero si el
Macros para el anlisis patrn fue encontrado, falso en el otro caso.
de datos - Tablas
dinmicas
Macros para el manejo
de los elementos de una
Propiedades del objeto Regular Expressions (regExp)
coleccin
Macros para el manejo Pattern. Palabra o patrn a buscar
de los elementos de una Global. Verdadero o Falso. Verdadero encuentra todas las
grfica
palabras dentro del texto dado. Falso encuentra solamente la
Macros para eliminar
primera ocurrencia. Falso por omisin.
valores duplicados en
dos o ms columnas IgnoreCase. Verdadero o Falso. Verdadero ignora maysculas o
Macros para encontrar y minsculas. Falso considera maysculas o minsculas. Falso por
eliminar valores omisin.
duplicados en una MultiLine. Verdadero o Falso. Verdadero busca en todas las lneas
columna
en un texto que contenga mltiples lneas. Falso solamente busca
Macros para enviar y
recibir datos a travs de
en la lnea donde se encuentre.
cajas de dilogo
Macros para Hojas de
Trabajo El objeto de coleccin de patrones (MatchCollection)
Macros para leer
archivos de texto
Es regresado por el mtodo Execute
Macros para leer
archivos de texto La coleccin puede tener cero o ms elementos/ coincidencias
separados por comas Propiedades de la coleccin:
Macros para limpieza de Count. Contiene el nmero de elementos/ coincidencias de
datos la coleccin
Macros para manejar Item. Permite acceder aleatoriamente a los elementos de la
carpetas, directorios y
coleccin
archivos
Macros para manejar
Expresiones Regulares
Macros para manejar los El objeto de coincidencias (Match)
elementos de una forma
(objeto Shape)
El objeto est contenido en el objeto de
Macros para procesar
tablas de datos colecciones(MatchCollection)
Macros para realizar Puede contener cero o ms elementos
operaciones bsicas en
las colecciones Propiedades del objeto
https://sites.google.com/site/automatizacionexcel/expresionesregulares 2/17
201763 operaciones bsicas en MacrosparamanejarExpresionesRegularesAutomatizacinExcel
las colecciones Propiedades del objeto
Macros para realizar FirstIndex. La posicin donde se encontr el patrn
operaciones en celdas
Length. La longitud del patrn encontrado
que cumplan ciertos
criterios Value. El valor del patrn encontrado
Macros para seleccionar
celdas con la ayuda de
las teclas de direccin Tabla de patrones en las expresiones regulares
Macros para seleccionar
celdas, columnas y
rangos . Punto. Cualquier caracter salvo el de retorno de carro
Macros para separar ^ Caret. Principio de la lnea
palabras
$ Signo de pesos. Final de la lnea
Macros para trabajar con
celdas especiales * Asterisco. Aparezca 0 o ms veces el caracter que lo
Macros para trabajar con precede
ciclos + Signo de ms. Aparezca 1 o ms veces el caracter que lo
Macros para trabajar con precede
libros
? Signo de interrogacin. Aparezca 0 o 1 veces el caracter
Macros para trabajar con
rangos
que lo precede
Manejo de textos
Modelo de Objetos de [] Corchetes. Conjunto de caracteres
Grficas/ Chart
[^] conjunto de caracteres que no pueden aparecer
Objeto Range
| Barra. Disyuncin
Objetos de
Programacin en Excel () Llaves . Agrupa una serie de patrones en un simple
Power Pivot elemento
Respuestas rpidas {n} Llaves . Que coincida exactamente n veces
Ricardo Villafaa {n,} Llaves . Que coincida al menos n veces
Figueroa
{n,m} Llaves . Que coincida al menos n veces y no mas de m
Separar un texto en
columnas utilizando
frmulas matriciales \n retorno de lnea
Talleres
\t tabulador
Usar el objeto Cells para
seleccionar rangos \w caracter alfanumrico (equivale a [a-zA-Z0-9_])
Usar funciones de Excel \W caracter no alfanumrico (equivale a [^a-zA-Z0-9_])
en Visual Basic \d caracter numrico (equivale a [0-9])
Uso de ADO para
\D caracter no numrico (equivale a [^0-9])
consultar una hoja de
Excel \s caracter de espaciado (espacio, tabulador, nueva lnea, etc)
Uso de la instruccin
With
\S caracter NO de espaciado
Uso de operadores
lgicos en las funciones \b lmites de una palabra
Uso de variables \B interior de una palabra
Uso de Variables Objeto
(Set)
Ventana "Inmediato" del
editor de VBA Macro para reemplazar textos utilizando Expresiones
Mapa del sitio
Regulares

Problema:

Buscar en el rango "A5:A36" de la siguiente tabla el texto que se


encuentra en la celda "B2" (noche)
y reemplazarlo por el texto que se encuentra en la celda "B3" (el
signo de interrogacin ?)

https://sites.google.com/site/automatizacionexcel/expresionesregulares 3/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel


La siguiente macro:

Utiliza el objeto regExppara reemplazar textos en un rango dado


de datos
Los datos de bsqueda estn definidos en el rango "A5:A36", a
travs de la variable rangodel tipo Range
El valor a buscar y posteriormente a reemplazar est definido en la
celda "B2" por la variable patron
El caracter o texto de reemplazo est definido en la celda "B3",
almacenado en la variable textoReemplazo

SubreemplazarRegExp()
'Macroparareemplazartextosutilizandoexpresiones
regulares
'
DimregExAsregExp
DimceldaAsRange

DimnuevoTextoAsString
DimpatronAsString
DimtextoOriginalAsString
DimtextoReemplazoAsString
DimrangoAsRange

patron=Range("B2").Value'patrnabuscar
textoReemplazo=Range("B3").Value'textodereemplazo

SetregEx=NewregExp'crearelobjetoregular
expression

Setrango=Range("A5:A36")'rangodeceldasa
buscar

ForEachceldaInrango
textoOriginal=celda.Value

'AsignarvaloresalaspropiedadesdelobjetoregExp
WithregEx
.Global=True
.MultiLine=True
.IgnoreCase=True
.Pattern=patron
EndWith

https://sites.google.com/site/automatizacionexcel/expresionesregulares 4/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

IfregEx.Test(textoOriginal)Then
nuevoTexto=regEx.Replace(textoOriginal,
textoReemplazo)
celda.Offset(0,1).Value=nuevoTexto
Else
celda.Offset(0,1).Value=""
EndIf

Nextcelda
EndSub

Tabla resultante despus de ejecutar la macro anterior:

Macro para localizar textos o patrones complejos dentro de


una seleccin dada como entrada

La siguiente macro muestra el uso de expresiones regulares para


encontrar patrones dentro de un rango de datos de texto:

Toma como regin de entrada el rango "A2:A11". Se toma este


rango para simplificar la macro; este rango se puede cambiar
arbitrariamente
Muestra 14 usos diferentes de las expresiones regulares
Utiliza la variable opcionpara seleccionar el tipo de caso

SubExpRegular()
'DefinirlosobjetosdelaExpresinRegular
DimmiRegExpAsRegExp
DimcolMatchesAsMatchCollection
DimregMatchAsMatch
DimmiRangoAsRange
DimopcionAsInteger

DimceldaAsRange
DimRetStrAsString
DimpatronAsString

OnErrorGoToError

opcion=InputBox("Nmerodeopcin")

SelectCaseopcion
https://sites.google.com/site/automatizacionexcel/expresionesregulares 5/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Case1
'Encontrarpalabrasconcretas,ejemploMxico
patron="Mxico"
Case2
'Encontrarnicamentelapalabra"de"(espacios
antesydespus)
patron="\bde\b"
Case3
'Encontrardgitos
patron="\d+"
Case4
'Encontrar7digitos
patron="\d{7}"
Case5
'Primerapalabradecadalnea,noincluye
letrasacentuadas
patron="^\w*"
Case6
'Encontrarlaprimerapalabradecadacelda,
incluyeletrasacentuadas
patron="^[AZ]*"
Case7
'Encontrarnmerosentreparntesis,ejemplo
(999)
patron="\([09]+\)"
Case8
'Alternativas.EncontrarVallartaoOaxaca
patron="Vallarta|Oaxaca"
Case9
'Encontrarnmerosdetelfono,ejemplo(99)
(99)9999999
patron="\(\d{2}\)\s{0,2}\(\d{1,3}\)\s\d{7,9}"
Case10
'Encontrarprecedentes
patron="\b\w+(?=\d{5})"
Case11
'Alternativas(avanzado)
'Encontrarcdigopostal,ejemploCp99999o
C.P.
patron="(CP.\d+)|(C\.P\..\d+)"
Case12
'LapalabraMxicoyeltextocomprendidohasta
encontrarlaexpresinTel
patron="Mxico.*Tel"
Case13
'EncontrarnicamentelapalabraMxicoseguida
delaexpresinTel(noincluyeTel)
patron="Mxico\s(?=Tel)"
Case14
'Expresinprecedidapordospuntos
patron="\b[AZ]+(?=\:)"
CaseElse
MsgBox"Terminado"
End
EndSelect

'CrearelobjetoRegularExpressionyasignndolaala
variableregExp
SetmiRegExp=NewRegExp

'AsignarvaloresalaspropiedadesdelobjetoregExp
WithmiRegExp
.Global=True'bsquedaglobal(msdeuna
ocurrencia)
.Pattern=patron'patrnabuscar
.IgnoreCase=True'ignorarmaysculasyminscalas

https://sites.google.com/site/automatizacionexcel/expresionesregulares 6/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

.MultiLine=True'multilnea
EndWith

'Seleccionarelrangodetrabajo
SetmiRango=Range("A2:A11")


ForEachceldaInmiRango
If(miRegExp.Test(celda.Value)=True)Then

'Obtenerlascoincidenciasatravsdelmtodo
Execute
SetcolMatches=miRegExp.Execute(celda.Value)'
Ejecutalabsqueda

RetStr=""
ForEachregMatchIncolMatches
RetStr=RetStr&"Posicin"
RetStr=RetStr&regMatch.FirstIndex&"Valor:
"
RetStr=RetStr&regMatch.Value&vbCrLf
Next

celda.Offset(0,1)=RetStr'colocalosvalores
encontradosenladerechadeltexto
Else
celda.Offset(0,1)=""
EndIf

Nextcelda

ExitSub

Error:
MsgBoxErr.Description,vbCritical
ExitSub

EndSub

Para mostrar el uso de expresiones regulares se utilizar como ejemplo


la siguiente hoja de trabajo:

https://sites.google.com/site/automatizacionexcel/expresionesregulares 7/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Datos en forma de texto utilizada para ejemplificar el uso de


Expresiones Regulares:

Direcciones
Diego De Montemayor No. 802 Sur, Barrio Antiguo, C.P.
64000 Monterrey, Mxico Tel: (52) (81) 83420121 mano
Morelos 8 Centro Cp 76750 Mxico D.F., Mxico Tel: (52) (52)
2730066
Av. Vallarta No. 5549 casi esquina con Av. Patria, Fracc. Real
Vallarta C.P. 45020 Guadalajara, Mxico Tel: (52) (33)
36298612
Portal De Claveria S/N Col Centro Cp 68000 Oaxaca Mxico
D.F., Mxico Tel: (52) (52) 5140688
Gutenberg 3 Col Centro Cp 62000 Cuernavaca Mor
Cuernavaca, Mxico
Madero 30 Col Centro Cp 06000 Mxico D.F., Mxico Tel:
(52) (52) 51300160
Npoles 62 Cp 06600 Mxico D.F., Mxico Tel: (52) (52)
55331589
Izazaga 8 Col Centro Cp 06080 Mxico D.F., Mxico Tel: (52)
(52) 55214180
Ave 690 S/N CP 45040 Puerto Vallarta, Mxico Tel: (52) (322)
31231511
Av. Eduardo Mata 1918 Col San Jos La Noria Cp 68120
Oaxaca Mxico D.F., Mxico Tel: (52) (52) 5147555

Encontrar palabras completas con Expresiones Regulares

Opcin = 1

Encontrar la palabra "Mxico"


patron = "Mxico"

https://sites.google.com/site/automatizacionexcel/expresionesregulares 8/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Encontrar palabras separadas por espacios en blanco con


Expresiones Regulares

Opcin = 2

Encontrar nicamente la palabra "de" (espacios antes y despus)


patron = "\bde\b"

Encontrar dgitos con Expresiones Regulares

Opcin = 3

Operador \d
https://sites.google.com/site/automatizacionexcel/expresionesregulares para encontrar caracteres numricos 9/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Operador \d para encontrar caracteres numricos


patron = "\d+"

Encontrar un nmero determinado de dgitos con Expresiones


Regulares

Opcin = 4

Operador {n} (llave), que coincida exactamente n veces


Encontrar 7 dgitos
patron = "\d{7}"

https://sites.google.com/site/automatizacionexcel/expresionesregulares 10/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Encontrar palabras al principio del texto con Expresiones


Regulares

Opcin = 5

Operador ^ para encontrar expresiones al inicio del texto


Primera palabra de cada lnea, no incluye letras acentuadas
patron = "^\w*"

Encontrar la primera palabra de cada celda, incluye letras acentuadas

Opcin = 6

Uso del operador ^ (caret) para buscar al inicio del texto


Uso de los operadores [ ] (corchetes) para representar un conjunto
de caracteres
patron = "^[A-Z]*"

https://sites.google.com/site/automatizacionexcel/expresionesregulares 11/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Encontrar nmeros entre parntesis, ejemplo (999)

Opcin = 7

Uso de los operadores [ ] (corchetes) para representar un conjunto


de caracteres
patron = "\([0-9]+\)"

Encontrar alternativas de texto con Expresiones Regulares

Opcin = 8
https://sites.google.com/site/automatizacionexcel/expresionesregulares 12/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Opcin = 8

Uso del operador | (barra vertical) para alternativas de expresiones


Encontrar Vallarta o Oaxaca
patron = "Vallarta|Oaxaca"

Encontrar nmeros de telfono, ejemplo (99) (99) 9999999

Opcin = 9

patron = "\(\d{2}\)\s{0,2}\(\d{1,3}\)\s\d{7,9}"

https://sites.google.com/site/automatizacionexcel/expresionesregulares 13/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Opcin = 10

Encontrar precedentes
patron = "\b\w+(?=\d{5})"

Opcin = 11

Alternativas (avanzado)
Encontrar cdigo postal, ejemplo Cp 99999 o C.P.
patron = "(CP.\d+)|(C\.P\..\d+)"

https://sites.google.com/site/automatizacionexcel/expresionesregulares 14/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Opcin = 12

La palabra Mxico y el texto comprendido hasta encontrar la


expresin Tel
patron = "Mxico.*Tel"

Opcin = 13

Encontrar nicamente la palabra Mxico seguida de la expresin


Tel (no incluye Tel)
patron = "Mxico\s(?=Tel)"

https://sites.google.com/site/automatizacionexcel/expresionesregulares 15/17
201763 MacrosparamanejarExpresionesRegularesAutomatizacinExcel

Opcin = 14

Expresin precedida por dos puntos


patron = "\b[A-Z]+(?=\:)"

Vase tambin:

Macro para extraer grupos de texto utilizando Expresiones


Regulares

https://sites.google.com/site/automatizacionexcel/expresionesregulares 16/17

Вам также может понравиться