martes, 5 de octubre de 2010

Contar número de palabras en una celda de Excel.

Recientemente me llegó una pregunta curiosa al correo, y es que un lector deseaba conocer el número de veces que se repetía cada letra del abecedario en el texto introducido en una celda, además del número de palabras de dicho texto. Precisamente será este primer cálculo el que desarrollaré:

...Hola necesito una ayuda ojala me la puedas dar.Tengo el siguiente párrafo:

“La estadística es la rama de las matemáticas que se ocupa de reunir, organizar y analizar datos numéricos y que ayuda a resolver problemas como el diseño de experimentos y la toma de decisiones”[1].La estadística actualmente es una herramienta importante y fundamental en todos los aspectos de la sociedad, ayuda en la investigación en los diferentes niveles de la ciencia. De igual manera la evolución constante de la estadística como disciplina facilita el análisis de la información y de problemas reales. La estadística descriptiva es la rama o disciplina que se relaciona con el desarrollo y uso de técnicas para la cuidadosa recolección y efectiva presentación de la información la cual tiene como objetivo describir las características principales de los datos reunidos. Básicamente hay tres tipos de medidas de resumen: medidas de tendencia central, medidas de dispersión o variabilidad de los datos y medidas de ubicación. Uno de los objetivos de la Estadística Descriptiva es presentar los datos de tal modo que permitan sugerir o aventurar cuestiones a analizar en mayor profundidad”

La idea es tenerlo en una celda de Excel luego pueda contar, mediante funciones o formulas, cuantas palabras tiene ese párrafo y el numero de veces que cada letra del alfabeto tiene.
Por ejemplo: cuantas veces esta la letra a en el párrafo, y asi con las letras. ...


Copiamos dicho texto en la celda A1 de nuestra hoja de cálculo, y en la celda A2 introducimos la siguiente fórmula:
=LARGO(ESPACIOS(A1))-LARGO(SUSTITUIR(ESPACIOS(A1);" ";""))+1

La clave del cálculo del número de palabras es la función LARGO(texto), que nos determina el número de caracteres existentes en la celda seleccionada, incluyendo los espacios en el texto. Recordemos también que la función ESPACIOS(texto) elimina los espacios del texto, excepto el espacio normal que se deja entre palabras!!!.

Veamos la explicación:
  • LARGO(ESPACIOS(A1))
    me devuelve la longitud del texto, una vez eliminados espacios repetidos en dicho texto; esto es, deja el párrafo editado en la celda A1 con cada palabra separada por un único espacio; en nuestro ejemplo 1093 caracteres en total.

  • LARGO(SUSTITUIR(ESPACIOS(A1);" ";""))
    sustituimos o reemplazamos, en el texto tratado con un único espacio de separación entre palabras, dicho 'único espacio'(en la fórmula " ") por 'nada' (en la fórmula ""); dejando un texto sin espacios, con todos los caracteres seguidos. Anidamos esa cadena de texto resultante en la función LARGO y obtenemos un valor de 922.

  • Restando la primera de la segunda y sumándole 1, obtenemos cuántas separaciones entre palabras existían; y por tanto, el número de palabras de la celda:= 172 palabras

¡Comprobado con el 'Contar palabras' de Word!.

9 comentarios:

  1. Hola quisiera hacer algo parecido a eso pero no se si en una macro

    la idea es la siguiente tengo tabla de letras de la a a la z y quiero escribir una palabra de forma que la cada letra se transforme en otra

    yo lo hice por ejemplo que la "A" se transforme en "Z" concatenando SI pero llego a 5 y no me deja anidar mas y aparte lo hace hacia abajo

    Tengo dos preguntas como hacerlo mediante un rango o sea SI (rango de a a z; entonces mostrar de z a A;vacio)

    lo hice asi pero ya digo me dejo a medias y no queda logico

    =SI(A29="a";$B$1;SI(A29="b";$B$2;SI(A29="c";$B$3;SI(A29="d";$B$4;SI(A29="e";$B$5)))))
    obvio $B$1="z" etc hacia abajo

    ¿Alguna idea extra?, lo agradecere infinitamente

    ResponderEliminar
  2. Hola LoboG,
    según entiendo quieres hacer algún tipo de 'encriptador', por decirlo así, de tal forma que coincidan en forma inversa las letras del abecedario.
    Realmente con el SI anidado puedes tener bastante trabajo (además sería imposible para versiones anteriores a Excel 2007), por lo que podrías probar con una función personalizada ver, empleando la instrucción SELECT CASE.
    La otra opción más sencilla es con el BUSCARV, ya que en una columna tienes a,b,c,d,etc y en la anexa sus correspondientes z, y, x, etc
    =BUSCARV(A29;A:B;2;0)
    Espero te oriente de alguna forma
    Slds

    ResponderEliminar
  3. Super tu explicacion excelente, ya había leído en otro foro la misma formula pero no la entendí por que no la explicaban tal y como tu lo hiciste, muchas gracias por tu aporte esto era lo que yo buscaba...

    ResponderEliminar
    Respuestas
    1. Gracias a ti , por tu comentario...
      Siempre se agradecen unas palabras de apoyo.
      Un saludo

      Eliminar
  4. TENGO UN DILEMA Y ES EL SIGUIENTE: POSEO UNA COLUMNA DE MAS DE 1000 DATOS, EN CADA CELDA DE ESTA COLUMNA UNA CADENA DE DATOS DEL SIGUIENTE TIPO "59-108-95-60-63-94" NECESITO SABER POR EJEMPLO CUANTOS "60" EXISTEN EN TODA LA COLUMNA. TENIENDO EN CUENTA QUE LA COMBINACIONES EXISTENTES SON TANTAS QUE AL ANALIZARLAS CON TABLA DINÁMICA SIEMPRE ME BOTAN "1" ES DECIR SI TENGO 1000 FILAS TENGO LA COMBINACIÓN DE 1000 "1", CUALQUIER AYUDA SERA BIEN RECIBIDA.

    MI CORREO ES DIGITADORSAC@HOTMAIL.COM

    PDT: NO ESTOY BRAVO SOLO TENGO DAÑADO EL MAYUS Y EL BLOQ MAYUS DE MI TECLADO :)

    ResponderEliminar
    Respuestas
    1. Hola,
      bueno, podrías leer las siguientes entradas del blog:
      http://excelforo.blogspot.com.es/2011/11/matriz-de-constantes-una-matricial-para.html
      ó
      http://excelforo.blogspot.com.es/2011/11/matriz-de-constantes-una-matricial-para_14.html
      Con una sencilla modificación, resolverías tu problema.
      Si no lo consigues házmelo saber.
      Un saludo

      Eliminar
  5. Hola,

    Necesito ordenar una lista de palabras por el numero de letras que tiene cada palabra. Esta tarea agilizaría mucho mi trabajo.

    Gracias por los aportes y por la información.

    ResponderEliminar
  6. Hola,

    Un compañero, me propuso esta solución:

    Si esta lista inicia en A1 escribe =largo(A1) te da el numero de caracteres luego sombreas desde A1 hasta B6 y click en datos ordenar segun columna B y luego agregas un nivel (abajo) segun columna A y sale como tu deseas.

    Lamento mi nivel precario de excel.

    Gracias por todo.

    Un saludo.

    ResponderEliminar
    Respuestas
    1. Hola!
      pues la solución propuesta es sin duda la más sencilla y la más eficaz.
      Se trate en definitiva de agregar una columna auxiliar al rango donde esté tu lista, por ejemplo A1:A6, en ese rango B1:B6 añades la fórmula =LARGO(A1) y arrastras.
      Luego efectivamente aplicas la herramienta ordenar sobre el rango A1:B6 para ordenar por la segunda columna B y listo.

      Saludos y gracias por el aporte

      Eliminar