CONTAR PALABRAS ESPECÍFICAS EN UNA CADENA DE TEXTO CON VBA

Hola a todos!

Esta temporada estoy bastante liado programando varios algoritmos de Inteligencia Artificial, y aunque es una programación bastante compleja, lo realmente complicado es poder dedicar tiempo a desarrollar estos códigos.

Pero aún así siempre tendré un momento para escribir nuevas publicaciones y compartirlas con todos vosotros.

En el post de hoy me gustaría mostrar un método para contar las veces que se repite una palabra específica en el una cadena de texto. Algo así como un “contar.si” pero con la diferencia que no estamos contando en un rango, sino en una variable string.

Partiendo de esta base, podemos hacerlo de varias formas, pero la de hoy en mi opinión sería la más eficiente, dado que evitamos utilizar bucles.

Para el ejemplo que os voy a poner empezaré desde el inicio, es decir, pasando los datos de un rango a una cadena de texto, esta sería la información de la hoja:

CONTAR PALABRAS ESPECIFICAS EN UNA CADENA DE TEXTO CON VBA

Se trata de la información sobre la presión arterial de varios pacientes de una clínica. Para el ejemplo utilizaremos la siguiente macro:

Sub CONTAR_STRING()
'Declaramos variable
Dim final As Long, i As Long
Dim sCadena As String, Contar As Long
'Trabajamos con la "Hoja1"
With Sheets("Hoja1")
final = Application.CountA(.Range("A:A"))
'Componemos cadena de texto
For i = 2 To final
ipalabra = ipalabra & "|" & .Cells(i, 2)
Next i
'Eliminamos espacio en blanco del inicio
sCadena = Trim(Mid(ipalabra, 2, Len(ipalabra)))
'Contamos el número de veces que se repite una palabra
Contar = UBound(Split(sCadena, "BAJA"))
End With
End Sub

sCadena será la variable a la que finalmente pasemos los datos de la cadena de texto, aquí podéis ver el contenido:

CONTAR PALABRAS ESPECIFICAS EN UNA CADENA DE TEXTO CON VBA1.jpg

Y ahora para contar las veces que se repite una palabra específica, por ejemplo “BAJA”, vamos a utilizar la siguiente línea de código:

Contar = UBound(Split(sCadena, "BAJA"))

y el resultado es que la palabra BAJA se repite 5 veces:

CONTAR PALABRAS ESPECIFICAS EN UNA CADENA DE TEXTO CON VBA2

Con una sola línea nos evitamos utilizar un loop y conseguimos mayor eficiencia en nuestros procesos.

Aunque este código es muy sencillo, este método de contar resulta muy interesante para grandes procesos o complejos algoritmos.

Y eso es todo, espero que os haya gustado!. En el archivo de prueba no hay botón de ejecutar, os dejo el código para que lo analicéis o probéis ejecutando la macro con “F8”.

Descarga el archivo de ejemplo pulsando en: CONTAR PALABRAS ESPECÍFICAS EN UNA CADENA DE TEXTO CON VBA

 

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Anuncios

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s