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:
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:
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:
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.
¡¡Muchas gracias!!
Solo estas buscando una palabra en una celda, pero si en una celda hay una cadena de texto, donde la palabra «Baja» se repite más veces, cómo haces?
Ejmpl
Celda «A1».value = «La baja calidad, la marea baja, la baja persona»
Necesito que mi variable me devuelva: 3
Hola Pedro:
Es normal que no te cuente 3 veces, el problema es que en la macro la palabra que indico está en mayúscula y en tu frase en minúscula.
Una solución es que utilices Ucase para pasar todo a mayúsculas:
Contar = UBound(Split(UCase(sCadena), «BAJA»))
Saludos.