Hojas de cálculo en Excel - página principal

Contar palabras

En una entrega anterior, vimos como se podían contar caracteres, a través de una función personalizada que habíamos creado. Esta vez haremos algo parecido, pero en lugar de contar caracteres, contaremos palabras enteras, despreciando los signos de puntuación, por si los colocamos incorrectamente.


Function contarpalabras(celda As Range)
'si ponemos un espacio antes de los signos de
'puntuación, mejor los eliminamos del cómputo

datos = Replace(celda, ".", "")
datos = Replace(datos, ",", "")
datos = Replace(datos, ";", "")
datos = Replace(datos, ":", "")
'reemplazamos los posibles dobles espacios
datos = Replace(datos, " ", " ")
'eliminamos los espacios inicial y final
datos = Trim(datos)
'Descomponemos la cadena, en subcadenas,
'para lo cual indicamos el delimitador " ", aunque
'por defecto, podríamos haberlo omitido,
'pues es ese mismo (espacio)

palabras = Split(datos, " ")
'Buscamos el máximo de palabras que se han
'formado, y le sumamos 1, porque el array
'comienza a contar desde cero

numero_de_palabras = UBound(palabras) + 1
'asignamos ese máximo a la función
contarpalabras = numero_de_palabras
End Function

Tan solo nos quedará llamar a la función desde nuestra hoja de cálculo de excel, para lo cual, nos bastará con introducirla de la siguiente forma:

=contarpalabras(celda)

celda: corresponde a la celda, cuyos caracteres queremos contar (A1, A5, B35, AB167, o la que sea).

Y nos quedará algo como esto que vemos en pantalla:



7 comentarios:

Neus dijo...

Hola a todos: necesito contar un valor tipo texto entre dos fechas. Las fechas estan en la colunma B y los datos en la columna C. Alguien me puede ayudar? Muchas Gracias de antemano

Javier Marco dijo...

Si fueras un poco más explícita, quizás podríamos ayudarte. No acabo de entender qué es lo que quieres hacer. Sé que tienes fechas en una columna, y texto en otra, pero no sé que quieres contar, y en base a qué condiciones.

Si quieres, incluso puedes colgar un ejemplo (sin datos reales) de lo que tienes en algún servidor gratuito (tipo megaupload, rapidshare, etc), y nos pones el link para descargar el ejemplo, y así ver más claramente que es lo que quieres hacer.

Salu2

Neus dijo...

Me explico. En la columna c hay varios conceptos, ejemplo (patatas, coles, ajos, lechuga, etc) y en la columna c hay la fecha que compre el producto. Ej. 01/03/08 compre coles, el 04/04/08 compre lechugas. Y lo que quiero saber es desde ejmplo 01/03/08 hasta el 30/03/08 cuantas coles compre. Contar.si.conjunto(rango;criterio?¿;rango2;"coles"). Lo que me falta es saber como sería la sintaxis de la formula y si la formula es la correcta. Muchas gracias y disculpad por lo escueto de la primera explicacion, espero haber aclarado un poco más.

Javier Marco dijo...

Lo más apropiado para hacer eso, es utilizar las funciones de base de datos de excel. En concreto la función BDCONTAR.

Aquí te dejo un fichero de excel, con el ejemplo que planteabas, utilizando esa función: http://www.megaupload.com/es/?d=VYVZQECS

Salu2

euskotarra dijo...

La fórmula correcta sería: =contar.si(c1:cx;"coles"), donde x es el nº de la fila del 30/03/08.

Javier Marco dijo...

Efectivamente tienes razón euskotarra, pero ese usuario planteaba la cuestión, seleccionando el rango con todas las fechas disponibles, no solo escogiendo desde/hasta la fecha que quería evaluar.

Vamos, que no quería tener que buscar la fecha inicial y final, sino que quería que le devolviese ese dato, seleccionando todas las fechas que tenía en una columna.

Yurena dijo...

hola, quiero darle a una letra un valor numérico, es decir, quiero que cuando yo ponga en la celda A1 una "X" en realidad fuera como si pusiera 89, para que en la suma total de las celdas me saliera el resultado sin tener que poner los números directamente.
Muchas gracias