Convertir numero en años y meses
- Jaime Franco Jimenez

- 18 jul 2023
- 4 Min. de lectura
Para el siguiente ejemplo, nos dan una cantidad de meses, y, debemos de convertirlo en años y meses, por ejemplo, 26 meses, son dos años, y, dos meses.
Tenemos el numero 58 meses, vamos a ver cuantos años y meses son, sabemos que un año son 12 meses, pues, vamos a dividir el numero de meses entre 12.
=A3/12
Nos devuelve:

Ya sabemos los años, que es la parte entera, pues, para quedarnos con la parte entera, usamos la función ENTERO.
=ENTERO(A3/12)
Nos devuelve 4 años.
Para el calculo de meses, debemos de quedarnos con la parte decimal, para ello, repetimos la operación anterior, y, lo restamos a la parte entera de dicha operación.
=(A3/12)-ENTERO(A3/12)
Encerramos la operación anterior entre paréntesis por la prioridad de operadores, y, multiplicamos por 12 meses.
=((A3/12)-ENTERO(A3/12))*12
Con esta operación, conseguimos el número de meses.
Ahora, vamos a usar la función APILARH, donde como argumento matriz1, es la primera operación.
=APILARH(ENTERO(A3/12)
Como argumento matriz2, entre comillas dobles, dejamos un espacio, y, ponemos la palabra años.
=APILARH(ENTERO(A3/12);"Años"
Como argumento matriz3, es la operación donde hemos sacado los meses.
APILARH(ENTERO(A3/12);"Años";((A3/12)-ENTERO(A3/12))*12
Como argumento matriz4, entre comillas dobles, dejamos un espacio, y, ponemos la palabra meses.
Cerramos paréntesis.
=APILARH(ENTERO(A3/12);"Años";((A3/12)-ENTERO(A3/12))*12;" meses")
Aceptamos, y, vemos que nos devuelve 4 años, y, 10 meses.

Si ponemos el valor 6, vemos que nos aparece 0 años, y, seis meses.

Si ponemos el valor 12, vemos que aparece 1 años, y, 0 meses, en este caso, la palabra años debería de ser en singular, porque hace referencia a una sola cosa, bien, después del cálculo de los años, hemos concatenado con la palabra años.

Pues en la palabra años, antes de dicha palabra, usamos el condicional SI, preguntamos si la operación del calculo de años es igual a 1, que ponga la palabra año, en caso contrario, que ponga la palabra años.
=APILARH(ENTERO(A3/12);SI(ENTERO(A3/12)=1;"Año";"Años");((A3/12)-ENTERO(A3/12))*12;" meses")
Aceptamos, arrastramos, y, vemos que donde los años es 1, aparece la palabra año.

Pero, vemos que donde los años son cero, aparece 0 años, quizás seria mejor que no apareciera, que apareciera solo los meses, pues, vamos a la primera expresión (A3), en el argumento matriz1 de APILARH, usamos, de nuevo, el condicional SI, preguntamos que, si la división de A3 entre 12 es igual a cero, que ponga un texto en blanco, en caso contrario, que ejecute la operación.
=APILARH(SI(ENTERO(A3/12)=0;"";ENTERO(A3/12));SI(ENTERO(A3/12)=1;"Año";"Años");((A3/12)-ENTERO(A3/12))*12;" meses")
Aceptamos, arrastramos, y, vemos que donde el año es cero, ya no aparece.

Pero, tampoco debería de aparecer la palabra años, para ello, vamos al argumento matriz2 de APILARH, en el argumento valor si falso, ponemos otro condicional SI, donde preguntamos si el resultado de la división es mayor a 1, que ponga años, en caso contrario, que ponga un texto en blanco.
¿Por qué uso otro condicional SI?
Si usamos un condicional SI, solo tenemos dos probabilidades, VERDADERO o FALSO, pero en este caso, necesito tres posibilidades, que sea igual a 1, distinto a 1, o ninguna de las anteriores, al usar otro condicional SI como argumento valor si falso del primer condicional SI, ya tengo los argumentos que necesito.
=APILARH(SI(ENTERO(A3/12)=0;"";ENTERO(A3/12));SI(ENTERO(A3/12)=1;"Año";SI(ENTERO(A3/12)>1;"Años";""));((A3/12)-ENTERO(A3/12))*12;" meses")
Aceptamos, arrastramos, y, vemos que no aparece la palabra años donde la división es cero.

Pero, donde sea 1 mes, debe de aparecer la palabra mes, no meses, para solventarlo, vamos al argumento matriz4 de APILARH, volvemos a usar el condicional SI, donde preguntamos que si la resta entre la división de A3 entre 12, menos la parte entera es mayor a 1, que ponga meses, en caso contrario, que ponga mes.
=APILARH(SI(ENTERO(A3/12)=0;"";ENTERO(A3/12));SI(ENTERO(A3/12)=1;"Año";SI(ENTERO(A3/12)>1;"Años";""));((A3/12)-ENTERO(A3/12))*12;SI(((A3/12)-ENTERO(A3/12))*12>1;" meses";" mes"))
Aceptamos, arrastramos, y, ya lo tenemos corregido.

Pero, si es cero meses, igual que con los años, no debería de aparecer ni cero, ni la palabra mes, las operaciones a realizar son las mismas que hemos realizado para los años, es decir, vamos a preguntar si la operación es igual a cero, que ponga un texto en blanco, en caso contrario, que ejecute la expresión.
=APILARH(SI(ENTERO(A3/12)=0;"";ENTERO(A3/12));SI(ENTERO(A3/12)=1;"Año";SI(ENTERO(A3/12)>1;"Años";""));SI(((A3/12)-ENTERO(A3/12))*12=0;"";((A3/12)-ENTERO(A3/12))*12);SI(((A3/12)-ENTERO(A3/12))*12>1;" meses";" mes"))
Antes de seguir, vemos que usamos varias veces las mismas expresiones, por lo que vamos a hacer uso de la función LET, creamos una primera variable, y, almacenamos la siguiente expresión:
=LET(a;ENTERO(A3/12)
Sustituimos en el resto de la expresión, dicha expresión por el nombre de variable.
=LET(a;ENTERO(A3/12);APILARH(SI(a=0;"";a);SI(a=1;"Año";SI(a>1;"Años";""));SI(((A3/12)-a)*12=0;"";((A3/12)-a)*12);SI(((A3/12)-a)*12>1;" meses";SI(((A3/12)-a)*12<2;" mes";SI(((A3/12)-a)*12=0;"")))))
La expresión queda algo más corta y entendible.
Seguimos por el tema de la palabra meses, o, mes, o, nada, en el argumento matriz4 de APILARH, preguntamos que si la operación da como resultado el valor de cero, que ponga un texto en blanco, si como resultado es un numero mayor a 1, que ponga la palabra meses, y, en caso contrario, que ponga la palabra mes.
=LET(a;ENTERO(A3/12);APILARH(SI(a=0;"";a);SI(a=1;"Año";SI(a>1;"Años";""));SI(((A3/12)-a)*12=0;"";((A3/12)-a)*12);SI(((A3/12)-a)*12=0;"";SI(((A3/12)-a)*12>1;" meses";" mes"))))
Aceptamos, arrastramos, y, ya lo tenemos.

Vamos a la primera expresión, vamos a usar la función UNIRCADENAS, donde como argumento delimitador, ponemos un espacio, ignoramos celdas vacías, y, como argumento texto1, es la expresión anterior.
=UNIRCADENAS(" ";VERDADERO;LET(a;ENTERO(A3/12);APILARH(SI(a=0;"";a);SI(a=1;"Año";SI(a>1;"Años";""));SI(((A3/12)-a)*12=0;"";((A3/12)-a)*12);SI(((A3/12)-a)*12=0;"";SI(((A3/12)-a)*12>1;" meses";" mes")))))
Pero, vemos que los números, pierden el formato y pasan a formato general, por lo que antes de usar la función LET, ponemos la función TEXTO, como argumento valor es la función LET, como argumento formato, entre comillas dobles, ponemos una almohadilla (#), quiere decir que nos redondee el valor al entero mas próximo.
=UNIRCADENAS(" ";VERDADERO;TEXTO(LET(a;ENTERO(A3/12);APILARH(SI(a=0;"";a);SI(a=1;"Año";SI(a>1;"Años";""));SI(((A3/12)-a)*12=0;"";((A3/12)-a)*12);SI(((A3/12)-a)*12=0;"";SI(((A3/12)-a)*12>1;" meses";" mes"))));"#"))
Aceptamos, arrastramos, y, podemos ver que tenemos una mucho mejor vista.
Si ponemos un numero menor a 1, nos lo redondeara a un mes.

Pero, si queremos saber los dias a que corresponde dicha cantidad, solo debemos de multiplicar dicha cantidad por 30 dias.
=0,5*30
· 0,1 corresponde a 3 dias.
· 0,2 corresponde a 6 dias.
· 0,3 corresponde a 9 dias.
· 0,4 corresponde a 12 dias.
· 0,5 corresponde a 15 dias.
Miguel Angel Franco




Comentarios