La mujer de mi buen amigo Abner es maestra de inglés en el colegio secundario de la zona. Como tal tiene la dura tarea de corregir exámenes y trabajos que preparan sus alumnos. Una las tareas que suele encomendar a sus discípulos es preparar una composición que no exceda un determinado número de palabras.
Abner me preguntó si había alguna manera de contar las palabras de cada trabajo en forma automática. Mi sugerencia fue que los alumnos presentaran los trabajos en archivos de Word (lo que me parece que hacen de todas maneras). Luego todo lo que hay que hacer es abrir el archivo y usar el menú Herramientas-Contar palabras
Había cierto aire de decepción en la mirada de Abner, que es un fanático de Excel. Si por él fuera también el café del desayuno lo prepararía con Excel.
-Ah!, pensé que se podría hacer con Excel, dijo cerrando la frase con un suspiro.
Personalmente soy enemigo de estas exageraciones pero me quedé pensando si, efectivamente, se podría hacer con Excel. Me acordé entonces de mi nota sobre la
Biblia en Excel. Allí justamente había usado Excel para contar palabras por versículos y también encontrar con qué frecuencia cierta palabra aparecería en el texto.
Decidí adaptar ese modelo a las necesidades de Bárbara, la mujer de Abner. En esta nota presento el resultado que tal vez le resulte útil a alguno de mis lectores. Y de no ser así, por lo menos puede contribuir a mostrar algunas técnicas interesantes en Excel.
Este modelo cuenta con dos hojas, Contador donde usamos fórmulas para contar caracteres, palabras y frecuencia de una determinada palabra
y la hoja Capítulos donde vamos poniendo los capítulos (o parágrafos o trabajos de los alumnos) en celdas de la columna B. En las celdas de la columna A ponemos el nombre del capitulo o el número de parágrafo o el nombre del alumno
Veamos ahora que fórmulas usamos. Para contar la cantidad de caracteres, incluyendo los espacios, usamos la función LARGO
Sencillo, no? Para contar los caracteres, sin tomar en cuenta los espacios tenemos que usar una fórmula más elaborada
Lo que hace la fórmula =LARGO(SUSTITUIR(ESPACIOS(Capitulos!B2)," ","")) es sustituir los espacios en blanco , que señalamos en la fórmula con " ", por ausencia de espacios que señalamos con "" (comillas sin espacios entre ellas). Usamos la función ESPACIOS para quitar todos los espacios que no se encuentren entre palabra y palabra.
Las cosas se complican un poco más cuando queremos contar la cantidad de palabras. Para hacer esto partimos de la base que toda combinación de caracteres que se encuentre entre dos espacios es una palabra. Una vez establecido esto usamos la fórmula
=LARGO(ESPACIOS(Capitulos!B2))-D8+(LARGO(Capitulos!B2)>=1)
La expresión LARGO(ESPACIOS(Capitulos!B2)) es similar a la fórmula de la celda C8, sólo que hemos agregado la función ESPACIOS como hemos explicado más arriba. De esta expresión restamos el resultado de D8, que es la cantidad de caracteres del parágrafo sin tomar en cuenta los espacios entres las palabras. Esta diferencia es el número de palabras en el parágrafo menos una.
No podemos agregar sencillamente 1 a esta fórmula ya que existe la posibilidad que la celda de la referencia está vacía. Por lo tanto agregamos la expresión
(LARGO(Capitulos!B2)>=1)
Esta es una expresión lógica cuyo resultado puedes ser 1 (VERDADERO) o 0 (FALSO). Es decir, si la celda contiene texto y por lo tanto el largo es por lo menos 1, la expresión da como resultado 1 que es agregado al resultado de la fórmula.
Ahora necesitamos una fórmula para calcular la frecuencia con que una palabra se repite en el texto. La idea es que en la celda C4 ponemos la palabra que queremos evaluar, en la celdas de la columna F veremos la frecuencia de la palabra en cada parágrafo y en la celda C5 veremos el total.
En la primera etapa del desarrollo del modelo usé la misma fórmula que en el modelo de la Biblia, pero no en forma matricial
=(LARGO(ESPACIOS(MAYUSC(Capitulos!B3)))-LARGO(SUSTITUIR(ESPACIOS(MAYUSC(Capitulos!B3)),MAYUSC(Contador!$C$4),"")))/LARGO($C$4)
Me eximo de explicar esta fórmula por la sencilla razón que es errónea (mea culpa!, mea culpa!).
Esta fórmula funciona bien a condición que la palabra buscada no coincida con alguna o algunas sílabas de otras palabras. Por ejemplo, al buscar la frecuencia de la palabra "el", el resultado para el parágrafo 1 es 4 veces. Sin embargo "el" sólo aparece 2 veces
Después de darle vuelta al asunto, decidí escribir una función definida por el usuario (UDF) que resultó ser de lo más sencilla
Al aplicar esta fórmula en el modelo vemos resultados totalmente distintos
El código se basa en crear una matriz (array) con las palabras de la celda usando la función Split de Visual Basic. Luego usamos InsStr para comparar cada una de las palabras de la matriz con la palabra buscada. En caso de coincidencia incrementamos el valor de la variable Counter en 1.
Basándonos en la misma idea podemos escribir otra función UDF para realizar el recuento de palabras
El archivo con el modelo y las funciones puede descargarse
aqui.
Technorati Tags: MS Excel