La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Excel/1167922-Contar-veces-que-aparece-una-cadena-en-un-rango-de.html

Contar veces que aparece una cadena en un rango de

sin imagen de perfil

Contar veces que aparece una cadena en un rango de

Publicado por cjota (23 intervenciones) el 15/12/2009 20:48:23
Hola:

Necesito contar cuantas veces aparece una cadena en un rango de celdas de texto. El rango puede tener parrafos y yo solo busco una cadena.

Ejemplo: busco las veces que aparece la palabra "sintesis" en un rango de celdas con naombres de proyectos.

Me seria util, lo mismo, hacer una funcion o una tabla dinamica.

He intentado usar las funciones Hallar() y Contar() pero nada.

Saludos
sin imagen de perfil

SOL.ContarVecesApareceCadenaEnRango

Publicado por Adriano Torres (29 intervenciones) el 19/12/2009 18:01:48
QUE TAL cjota, AL MIRAR TU PREGUNTA LA ÚNICA SOLUCIÓN QUE SE ME OCURRIÓ ES PROGRAMAR UNA PEQUEÑA FUNCIÓN LA CUAL TE MUESTRO :

Hay que hacer lo siguiente :

1. Colocar en B2 la palabra o cadena a buscar, por ejemplo sintesis.
2. Colocar en C2 el rango de celdas en cual hay que buscar, por ejemplo B4:B5.
3. Escribir en las B4, B5, E4 y E5 los siguientes textos respectivamente "proyecto de la sintesis matematica", "sintesis explicativa del fenomeno", "la sintesis de bernoulli", "sintesis matematica"; son meros ejemplos.
4. Abrir el editor de visual basic, insertar u módulo y pegar el siguiente código.

Function Cadenas(micadena, mirango)
txtbuscar = micadena
mirango = mirango
For Each c In Range(mirango)
txtcelda = c.Text
For i = 1 To Len(txtcelda)
ichar = Mid(txtcelda, i, 1)
If Left(txtbuscar, 1) = ichar Then
txtposible = Mid(txtcelda, i, Len(txtbuscar))
If txtposible = txtbuscar Then
contcadena = contcadena + 1
End If
End If
Next i
Next c
Cadenas = contcadena
End Function

5. En la celda D2 la fórmula =Cadenas(B2,C2), lo que arrojará como resultado 4, que es el número de veces que se encuentra la cadena sintesis en el rango especificado.

OBSERVACIONES:
a. La macro distingue mayúsculas y minúsculas, así como acentos.
b. Sirve para encontrar cualquier cadena o letra, no distingue palabras separadas por espacios, solo cuenta la cantidad de veces que aparece una cadena o letra en un rango de celdas.

SI TE SIRVIÓ COMENTA QUE ESTO ES TIEMPO Y SIRVE SABER QUE HA ALGUIEN PUDISTE AYUDAR.

Adrian Torres
sin imagen de perfil

RE:SOL.ContarVecesApareceCadenaEnRango

Publicado por cjota (23 intervenciones) el 21/12/2009 03:01:02
Mil gracias por responder.

Lo he estado probando. pero se traba.

no entiendo el por que de la expresion:
mirango = mirango

En excel da el error #!VALOR!

Lo he debugueado y en la fila:
For Each c In Range(mirango)

se detiene y sale de la funcion. Nunca llega al punto de ruptura puesto en
txtcelda = c.Text.

que hago?
Quien es c?
sin imagen de perfil

SOL.ContarVecesApareceCadenaEnRango

Publicado por Adriano Torres (29 intervenciones) el 21/12/2009 20:32:11
Mira, probé el código varias veces y sigue funcionando, aun así lo reduje un poco quedando:

Public Function Cadenas(micadena, mirango)
For Each c In Range(mirango)
txtcelda = c.Text
For i = 1 To Len(txtcelda)
ichar = Mid(txtcelda, i, 1)
If Left(micadena, 1) = ichar Then
txtposible = Mid(txtcelda, i, Len(micadena))
If txtposible = micadena Then
contcadena = contcadena + 1
End If
End If
Next i
Next c
Cadenas = contcadena
End Function

Revisa si hiciste correctamente los pasos 1 a 4, quizá algo ande mal por allí. Si aún así te sigue fallando te puedo mandar el archivo que hice de ejemplo.

Comenta !!!

Adriano Torres
sin imagen de perfil

RE:SOL.ContarVecesApareceCadenaEnRango

Publicado por cjota (23 intervenciones) el 23/12/2009 19:00:32
Adriano,

no funciona. yo trabajo con office 2003.

he depurado y sale de la funcion en el For Each y mirango aparece vacio.

porfa si pudieras mandarme tu fichero de ejemplo...

anel20002000[arroba]yahoo.com

te lo agradecere.

Gracias Mil
sin imagen de perfil

SOL.VaPorCorreo

Publicado por Adriano Torres (29 intervenciones) el 24/12/2009 16:03:43
Claro, te lo envio. Antes lo volví a probar y sigue funcionando, ojalá te sirva.

Listo, enviado a [email protected]

Cuando hayas resuelto tu problema comenta aqui en el foro.

Adriano Torres
sin imagen de perfil

RE:SOL.VaPorCorreo

Publicado por cjota (23 intervenciones) el 29/01/2010 22:41:22
socio,

mil gracias por todo. funciono perfectamente. el error estaba en que yo ponia el rango como b2:b6 como se hace comunmente en las funciones de la libreria excel y debia poner "b2:b6" ya que en la funcion tuya, rango es de tipo texto.
Ya vi el problema y lo corregi, todo funciona perfectamente.

un abrazo y mil gracias

RE:SOL.VaPorCorreo

Publicado por HOMERO CORDOBA (1 intervención) el 19/02/2018 18:30:09
Buenos dias.

Me podrias por favor pasar el Libro de trabajo con est ejemplo?, no logro hacerlo fucnionar. saludos