Supongamos que programamos un curso de programación dividido en 10 encuentros/clases. Las clases se dictarán todos los lunes, miércoles y viernes. La pregunta es: ¿cuál es la fecha del último encuentro?
Podemos resolver este problema con facilidad usando la función DIA.LAB.INTL (Excel 2010 y versiones posteriores) pero tomando en cuenta un parámetro oscuramente explicado en la ayuda en línea de la función.
Empezamos por montar nuestro modelo
En las columnas D a H marcamos con el 0 (cero) los días en que se dictarán las clases y con 1 los días de la semana en los que no se dictarán las clases del curso. Ésto parece ir contra la intuición ya que, siendo usuarios consuetudinarios de Excel, asociamos el 0 con el valor FALSO y el 1 con el valor VERDADERO. Pero, como veremos más adelante, la función DIA.LAB.INTL requiere que usemos estos valores.
Como podemos ver, el curso de Programación comprende 10 encuentros (columna C) y se dicta los días Martes y Jueves.
Ahora agregaremos la columna con el cálculo de la fecha de cierre del curso
La fórmula en la celda J3 es =DIA.LAB.INTL(I3,C3-1,CONCAT(D3:H3)&"11")
Antes de seguir adelante aclaremos que la función CONCAT está disponible solamente para los usuarios de Excel 2016 (en Office 365). Usuarios de versiones aneriores deberán usar la función CONCATENAR.
Expliquemos la fórmula
El primer argumento es la fecha inicial; el segundo es el número de días que en nuestro caso es el número de encuentros. El tercer argumento es un valor textual compuesto de 1 y 0 que indican cuales son los días laborales de la semana y cuales no. Este valor textual debe tener siempre siete símbolos (uno por cada día siguiendo el orden de los días de la semana).
El "truco" en esta fórmula es definir sólo los días en que se dicta el curso como días laborales.
Opcionalmente podemos agregar una lista de feriados, el cuarto argumento, en caso de ser necesario.
También podemos cambiar el formato de las fechas para que muestren el día de la semana
Otra mejora posible es usae Formato Numérico Personalizado para mostrar "si" en lugar de 0 y "no" en lugar de 1
Se podría invertir 1 y 0 en la tabla y poner como fórmula (matricial) 1-D3:H3 ?
ResponderBorrarNo como lo estás planteando. La función usa un texto (cadena de texto) compuesto de 1 y 0. La expresión no te crearía el texto requerido. Pero, como siempre, la mejor forma de aclararlo es probando :)
ResponderBorrarBuenas tardes (desde España);
ResponderBorrar¿Podrias explicar lo de formato personalizado y "si";;"no"?. es que no lo "pillo"
Gracias y un saludo
Fijate en estos dos viejos posts
ResponderBorrarhttp://jldexcelsp.blogspot.co.il/2006/05/formato-personalizado-de-nmeros-en-ms.html
http://jldexcelsp.blogspot.co.il/2006/05/formato-personalizado-de-nmeros-en.html
Tal vez publique un post actualizado (ya han pasado 11 años desde que publique los anteriores!!)
Buenas tardes,
ResponderBorrarEn Excel 2013 ¿se puede concatenar un rango? es decir hacer esto =CONCATENAR(D3:H3); yo lo he intentado para eel ejemplo de este post y nada tuve que hacerlo así:
=DIA.LAB.INTL(I3;(C3-1);CONCATENAR(D3;E3;F3;G3;H3;"11"))
Es decir, concatenar celda por celda; no sé si habrá otra manera
saludos
Fijate en este post
ResponderBorrarGracias Jorge, Dos cosas:
ResponderBorrar1. he utilizado la formula que hay en el post que pones en el último comentario; pero me sale una problema, si hago como pones en el ejemplo del psot al que remites y pongo en columna (en cada celda)abcde...y en la fórmula, en el separador, pongo"", entonces solo me une abcd, es decir, la "e" no me la coge; para que me la cogiera tendría que poner una nueva celda con un caracter entonces me cogería "abcde", pero no la nueva celda.
2.Como yo no lo puedo probar te pregunto: si me pasas tu libro de excel aplicando la fórmula CONCAT (para 2016), y lo abro en mi versión de 2013, ¿qué pasaría?, ¿daría error en la fórmula?
Gracias
Hola,
ResponderBorrar1 - deja el separador en blanco;
2 - la función no existe en las versiones anteriores a Excel 2016 por lo que al abrirlo en una versión anterior el valor calculado en la celda será transformado en texto.