Excel - Contar veces que aparece una cadena en un rango de

 
Vista:
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar