MES no es una utilidad que exista en Excel. Excel tiene muchas funcionalidades para trabajar con fechas, y cada vez implementa más. No obstante, hay una acción que se usa con frecuencia, y que aún no está en Excel, que es leer el nombre de un mes en texto y que devuelva su valor numérico (ejemplo, que lea octubre y devuelva 10).

Utilizar una fórmula

Lo primero que se nos sucede a todos es anidar una secuencia de funcionalidades SI que comprueben si en la celda origen poseemos escrito «enero», y si no, que mire si hemos puesto «febrero», etc. Quedaría algo como:

=SI (E8=”ENERO”;1;SI(E8=”FEBRERO”;2; SI(E8=”MARZO”;3;SI(E8=”ABRIL”;4; SI(E8=”MAYO”;5;SI(E8=”JUNIO”;6; SI(E8=”JULIO”;7;SI(E8=”AGOSTO”;8; SI(E8=”SEPTIEMBRE”;9;SI(E8=”OCTUBRE”;10; SI(E8=”NOVIEMBRE”;11;SI(E8=”DICIEMBRE”;12;))))))))))))

En este ejemplo hemos introducido saltos de línea para que se lea mejor. Esto vale si lo vamos a usar una vez, pero ¿qué sucede si lo debemos repetir frecuentemente en diferentes reportes? Simplemente deberemos copiar constantemente la fórmula. ¿Y si deseamos que además intercepte otras formas de escribir los meses? Puede ser, entre otras cosas, la aceptada SETIEMBRE, o abreviaturas (como ENE para enero)

Si hacemos eso, simplemente vamos a tener una fórmula bastante extendida para lograr leerla de manera correcta. Ya usemos el operador O (), ya anidemos más SI (recuerda el límite de 256 SI anidados – todavía nos encontramos lejos, pero estas fórmulas crecen rapidísimo). Independientemente de los parámetros de Excel, que acostumbran estar bastante lejos, lo considerable es que las futuras revisiones de la hoja, entre otras cosas para corroborar que calcula bien o para buscar un posible error, nos llevarán bastante tiempo.

Un poco de programación

Cuando los desarrolladores de Excel no nos han preparado una utilidad que nos devuelva el resultado que nosotros deseamos, tenemos la posibilidad de programarla nosotros con un poquito de maña (no es necesario demasiada), y con la asistencia del editor VBA que hay en nuestro Excel.

En la situación que nos ocupa vamos a usar la composición SELECT CASE. Una composición genérica sería:

SELECT CASE a CASE 1 código1 CASE 2 código2 CASE ELSE código3 END SELECT

Esto se puede traducir al español más o menos como:

Analiza el valor de «a». Suponiendo que a=1, ejecuta el código1; suponiendo que a=2, ejecuta el código2; suponiendo que «a» valga algún otro valor diferente a los anteriores, ejecuta el código 3.

Hay que entender que tenemos la posibilidad de poner numerosos casos diferentes para que se ejecute el mismo código. Entre otras cosas, tendríamos la posibilidad de realizar el código1 cuando «a» vale 1 y cuando vale 15, sencillamente separando los valores por comas. Sería algo así:

SELECT CASE a CASE 1, 15 código1 . . .

Una vez ya poseemos esto, es muy simple pasarlo a nuestros nombres de meses en texto y a nuestros resultados numéricos.