01 / 14Diez Tareas, Cuarenta Días, Veintiocho en Obra

Diagramas de Gantt
Excel
Planificación de Proyectos

Diagrama de Gantt en Excel con días laborables

El Programa de Obra Prometía la Entrega el Viernes 10 de Abril y la Tienda No Puede Estar Antes del Martes 28 de Abril, Porque Cuarenta Días de Trabajo se Metieron en Veintiocho Días de Calendario

9 oct 202616 min de lectura

UsaDIA.LABDIASEMY, O, NOCONTAR.SI

Hartcliffe Interiors planificó la reforma de una tienda como diez tareas y cuarenta días laborables. La hoja del programa prometía la entrega el viernes 10 de abril. Esas diez tareas, en días con la obra abierta, terminan el martes 28 de abril.

En el archivo no hay nada inventado. Cada duración viene del gremio que la presupuestó, y cada fecha de fin es el inicio más la duración, que es la cuenta que escribiría cualquiera.

=B2+C2-1 cuenta sábados, domingos y festivos como tiempo de trabajo. Entre el 2 de marzo y el 10 de abril hay cuarenta días naturales, y doce de ellos son días en los que no hay nadie en la obra.

Tramo del programa, 2 mar a 10 abr    40 días naturales
Días laborables dentro                28
Días de trabajo de las diez tareas    40

Cuarenta días de trabajo no caben en veintiocho días de obra. Los dieciocho días naturales que separan las dos fechas de entrega no son un retraso: nunca estuvieron en el plan.

MedidaEn el programaEn días laborables
Tareas1010
Días de trabajo4040
Primer día en obralun 02 marlun 02 mar
Entregavie 10 abrmar 28 abr
Desfase—12 días laborables

Un diagrama de Gantt dibujado con esas fechas no se equivoca en las barras. Se equivoca en el calendario que hay debajo, y dibuja el error a todo lo ancho, en color, con pinta de plan.

01Diez Tareas, Cuarenta Días, Veintiocho en Obra

Diez Tareas, Dos Fechas de Entrega Distintas

La reforma de una tienda dividida en diez tareas, de marzo a abril de 2026. Las tareas están en A2:G11. La columna B es el inicio que el programa dio a cada gremio, C es la duración que el gremio presupuestó en días laborables, D es el fin que la hoja calculó con =B2+C2-1, y E es el fin al que llega esa misma duración cuando se saltan sábados, domingos y los dos festivos de Semana Santa. La columna F son los días laborables que separan esos dos finales. La lista de festivos está en J2:J3: Viernes Santo 3 de abril y Lunes de Pascua 6 de abril de 2026. El programa va del lunes 2 de marzo al viernes 10 de abril, que son cuarenta días naturales con veintiocho laborables dentro, y las diez tareas suman cuarenta días de trabajo.

ABCDEFG
1
Task
Start
Days
Planned finish
Working finish
Days adrift
What the programme did
2
Strip out
Mon 02 Mar
4
Thu 05 Mar
Thu 05 Mar
0
The only task the two calendars agree on. Four days from Monday lands on Thursday either way, because no weekend falls inside it — which is exactly why nobody checked the next nine rows
3
First fix electrics
Fri 06 Mar
5
Tue 10 Mar
Thu 12 Mar
2
Five days from Friday runs through Saturday and Sunday on the programme and finishes Tuesday. On site it finishes Thursday, and the two lost days are never recovered
4
Plasterboard and skim
Wed 11 Mar
6
Mon 16 Mar
Fri 20 Mar
4
Six days over a weekend, and the slip doubles. The programme has the plasterers off site on Monday 16 March; the trade itself is still there on Friday 20 March
5
Flooring
Tue 17 Mar
4
Fri 20 Mar
Thu 26 Mar
4
The only row where the two finishes fall in the same week, which made the programme look recoverable. It is not: the start date is already four days out
6
Joinery install
Sat 21 Mar
7
Fri 27 Mar
Wed 08 Apr
6
The programme books the joiners in on a Saturday. Seven days of work spanning Easter is the longest task on the sheet and the one that carries the slip into April
7
Second fix electrics
Sat 28 Mar
3
Mon 30 Mar
Mon 13 Apr
8
A second Saturday start, and the three-day duration is honest — it is the date in front of it that is not. The electricians are booked for a day the building is shut
8
Decorating
Tue 31 Mar
5
Sat 04 Apr
Mon 20 Apr
9
The first finish date to land on a weekend. Five days from Tuesday 31 March crosses Good Friday as well, which is two of the twelve days the site is closed
9
Signage and shopfront
Sun 05 Apr
2
Mon 06 Apr
Wed 22 Apr
11
Booked to start on Easter Sunday and finish on Easter Monday. Both bank holidays are in the holiday list and neither was in the arithmetic
10
Snagging
Tue 07 Apr
3
Thu 09 Apr
Mon 27 Apr
12
By this row the slip has stopped growing: everything after Easter is weekends only, and two days a week is what the rest of the programme costs
11
Handover clean
Fri 10 Apr
1
Fri 10 Apr
Tue 28 Apr
12
One day of work, and the date on the client's letter. Friday 10 April on the programme, Tuesday 28 April on a calendar that knows what a Saturday is

fxLas celdas con fórmulas están resaltadas en verde

Pasa el mouse sobre las celdas con fórmulas para ver la fórmula y resaltar las celdas referenciadas

Las columnas D y E son las mismas diez duraciones leídas de dos maneras. D es lo que calculó la hoja sumando días a una fecha; E es dónde caen esos días cuando el fin de semana no es laborable.

Las dos coinciden en la primera tarea y en ninguna más. En la fila diez ya se separan doce días laborables, y doce es exactamente el número de sábados, domingos y festivos que hay dentro del tramo original.

Tres tareas están citadas para empezar un día con la obra cerrada: sábado 21 de marzo, sábado 28 de marzo y Domingo de Pascua. Otras dos están citadas para terminar en uno.

Escenario: Pon =DIASEM(B2;2)>5 al lado de la columna de inicios de tu propio programa y arrástralo hacia abajo. Cada VERDADERO es un gremio citado un día en que no habrá nadie para abrirle.

Pruébalo en la cuadrícula

02DIA.LAB: El Fin que Salta el Fin de Semana

DIA.LAB recibe una fecha de inicio y un número de días laborables y devuelve la fecha a la que llegas, pasando por encima de sábados, domingos y de cada fecha de la lista de festivos:

=DIA.LAB(B2;C2-1;Festivos)

En la fila del pladur son seis días laborables desde el miércoles 11 de marzo, y devuelve el viernes 20 de marzo donde la hoja tenía el lunes 16. Los mismos seis días de trabajo, cuatro días más abajo en el calendario.

A la función le da igual cuántos fines de semana cruce. Pide seis días laborables y recibes seis días laborables, estén dentro de una semana o a caballo de la Semana Santa.

DIA.LAB y DIAS.LAB existen en todas las versiones desde Excel 2007 y también están en Google Sheets. Las variantes .INTL llegaron en 2010.

Una obra que trabaja los sábados quiere =DIA.LAB.INTL(B2;C2-1;11;Festivos), donde 11 significa que el domingo es el único día de fin de semana. Ese argumento admite además una cadena de siete unos y ceros para casos más raros.

Escenario: Escribe =DIA.LAB(B2;C2-1;$J$2:$J$3) en una columna libre al lado de tus duraciones y compárala con las fechas de fin que ya tienes. Cada fila en la que difieran es una fecha que le has prometido a alguien.

Pruébalo en la cuadrícula

03El Menos Uno de Toda Duración

Una tarea de cuatro días que empieza el lunes termina el jueves, no el viernes. El primer día es uno de los cuatro, así que el fin es el inicio más tres.

Eso es lo que hace el C2-1, y es el error más común de un programa hecho a mano. =DIA.LAB(B2;C2) añade sin decir nada un día a cada tarea de la hoja.

Diez tareas, diez días de más, y el error se acumula porque cada tarea arranca de la anterior.

DuraciónEmpieza=DIA.LAB(B2;C2)=DIA.LAB(B2;C2-1)
1 díalun 02 marmar 03 marlun 02 mar
4 díaslun 02 marvie 06 marjue 05 mar
5 díasvie 06 marvie 13 marjue 12 mar

La prueba es una tarea de un día. Si tu fórmula dice que una tarea de un día termina mañana, falta el menos uno, y todas las fechas de abajo llegan un día tarde.

Escenario: Añade una tarea de un día al final de tu programa y comprueba que su fecha de fin es igual a la de inicio. Corrige ahí la fórmula y arrástrala hacia arriba por la columna.

Pruébalo en la cuadrícula

04Cada Tarea Empieza el Siguiente Día Laborable

El inicio de cada tarea es el fin de la anterior, movido un día laborable:

B3:  =DIA.LAB(D2;1;Festivos)

=D2+1 es lo que tenía el programa, y por eso los carpinteros estaban citados el sábado 21 de marzo. DIA.LAB con un 1 lleva un fin en viernes al lunes y deja un fin en martes en el miércoles.

Ahora el plan entero lo gobiernan dos fórmulas: esta en la columna de inicios y la de DIA.LAB en la columna D. Cambia cualquier duración y todas las fechas de abajo se mueven.

En un programa vivo no debería haber ninguna fecha escrita a mano salvo el primer inicio y la lista de festivos. Una fecha escrita en medio es una dependencia que deja de funcionar en cuanto cambia algo por encima.

Escenario: Activa Fórmulas ▸ Mostrar fórmulas en tu propio programa y recorre la columna de inicios. Cada celda que tenga una fecha en vez de una fórmula es un eslabón que no se moverá cuando cambie una duración.

Pruébalo en la cuadrícula

05La Lista de Festivos Es Parte de la Fórmula

El tercer argumento es un rango de fechas, y dejarlo fuera es la segunda mitad de este fallo. El Viernes Santo y el Lunes de Pascua son dos de los doce días que este programa se trabajó.

Pon las fechas en una columna propia, llama Festivos al rango y las dos funciones leerán la misma lista:

J2:  3 abr 2026    Viernes Santo
J3:  6 abr 2026    Lunes de Pascua

Un nombre gana a $J$2:$J$3 porque la lista crece. Las fechas del año que viene se añaden al final, el nombre las sigue y no hay que tocar ninguna fórmula.

Escribe las fechas con =FECHA(2026;4;3) si el libro cruza regiones. Una fecha construida así no se puede leer como 4 de marzo en un equipo con otro orden, que es justo como entran las fechas en texto en la lista.

Un festivo guardado como texto y no como fecha devuelve #¡VALOR!, y lo devuelve en toda la columna, no solo en esa fila. Es el único error que lanza este montaje, y significa que alguien escribió una fecha que Excel no reconoció.

Las celdas vacías dentro del rango de festivos se ignoran, así que un rango con nombre y sitio de sobra es seguro. Los duplicados también se ignoran, que es lo que importa cuando dos delegaciones comparten lista.

Los festivos que caen en fin de semana ya se saltan y cuentan una sola vez. Un día de Navidad en sábado con traslado al lunes necesita el lunes en la lista, no el sábado.

Escenario: Ponle el nombre Festivos a tu rango desde el Cuadro de nombres y escribe =CONTAR(Festivos) en una celda libre. Debería dar el número de fechas que ves en la lista; cualquier cifra menor es una fecha en texto escondida.

Pruébalo en la cuadrícula

06DIAS.LAB Devuelve la Duración

DIAS.LAB es DIA.LAB al revés: dale dos fechas y cuenta los días laborables que hay entre ellas, incluidos los dos extremos:

=DIAS.LAB(B2;D2;Festivos)

En un programa correcto, en todas las filas devuelve el número que ya está en la columna Días. Es la comprobación más barata de la hoja y caza lo único que las fórmulas no pueden ver.

Una fila en la que la comprobación no cuadre con la duración es una fecha que alguien escribió encima. En este programa no cuadra en nueve de diez filas.

La misma función responde a lo que pregunta el cliente. =DIAS.LAB(B2;E11;Festivos) es la obra entera en días laborables y =E11-B2+1 es esa misma obra en días de calendario de pared: 40 y 58.

Escenario: Añade a tu programa una columna de control con =DIAS.LAB(B2;D2;Festivos)-C2. Todas las filas deberían dar 0, y al ordenar esa columna las fechas escritas a mano suben arriba del todo.

Pruébalo en la cuadrícula

07La Línea de Tiempo Es Formato Condicional

Un diagrama de Gantt no necesita un gráfico. Pon una columna por día en la cabecera, apunta una regla de formato condicional al bloque de debajo y las barras se dibujan solas:

L1:  =B2                       el primer día en obra
M1:  =DIA.LAB(L1;1;Festivos)   y arrastra a la derecha

Selecciona la cuadrícula desde L2 hasta la última tarea, abre Inicio ▸ Formato condicional ▸ Nueva regla ▸ Utilice una fórmula y dale una sola prueba:

=Y(L$1>=$B2;L$1<=$D2)

Los dólares son todo el truco. L$1 fija la fila, para que cada celda lea la fecha del encabezado de su propia columna; $B2 fija la columna, para que cada celda lea las fechas de su propia fila.

Una sola regla pinta todas las barras. Cambia una duración y las barras se mueven con las fechas, porque la regla lee las mismas dos celdas que escribieron las fórmulas.

Escenario: Construye la fila de encabezados a lo largo de quince columnas con =DIA.LAB(L1;1;Festivos), aplica esa única regla al bloque de debajo y estrecha esas columnas a unos 3 caracteres. Las barras aparecen según las estrechas.

Pruébalo en la cuadrícula

08Sombrear los Días en que Nadie Está en Obra

Una línea de tiempo construida sobre días laborables todavía tiene que enseñar los días que se saltó, o las barras parecerán tener huecos sin motivo. Dos reglas más lo hacen:

=DIASEM(L$1;2)>5              el fin de semana
=CONTAR.SI(Festivos;L$1)>0    los festivos

DIASEM con un segundo argumento de 2 numera el lunes como 1, así que cualquier cosa por encima de 5 es sábado o domingo. CONTAR.SI contra la lista con nombre caza la Semana Santa.

El orden de las reglas decide qué color gana. Excel las aplica de arriba abajo, y cuando dos reglas tocan el mismo relleno se queda con el de arriba. Pon las reglas de fin de semana y festivos por encima de la regla de la barra y marca Detener si es verdad en las dos.

Una barra que cruza un fin de semana sombreado está diciendo la verdad: la tarea sigue abierta y nadie está trabajando en ella. Una barra que pinta por encima del sombreado es el error original dibujado en verde.

Escenario: Abre Formato condicional ▸ Administrar reglas, arrastra la regla del fin de semana a lo alto de la lista y marca Detener si es verdad. La cuadrícula debería mostrar ya una franja gris cada sábado y cada domingo, atravesando las barras.

Pruébalo en la cuadrícula

09Pintar el Avance Dentro de la Barra

Añade una columna de porcentaje completado en H y una segunda regla de barra rellena cuánto hay hecho de cada tarea. La parte hecha de una barra termina a unos cuantos días laborables de su inicio:

=Y(L$1>=$B2;L$1<=DIA.LAB($B2;REDONDEAR($C2*$H2;0)-1;Festivos))

$C2*$H2 son los días de trabajo terminados, REDONDEAR convierte 2,8 días en 3 porque una columna es un día entero, y el menos uno es la misma regla del primer día de la sección 3.

Esta regla va por encima de la regla de barra simple y sin Detener si es verdad, de modo que la parte terminada se pinta oscura y el resto de la barra conserva debajo el relleno más claro.

Una barra de avance es una afirmación, no un cálculo. Nada en la hoja sabe cuánto hay hecho, así que la columna de porcentaje tiene que venir de alguien que estuvo en la obra.

Escenario: Pon 100%, 60% y 0% en la columna de porcentaje de tres tareas y añade la regla de arriba. Comprueba que la tarea al 60% sale oscura en tres de sus primeros días y clara en el resto.

Pruébalo en la cuadrícula

10La Versión con Gráfico y Sus Cuatro Ajustes

Un gráfico de verdad es mejor cuando el plan sale de la hoja: una diapositiva, un programa impreso, un dosier para el cliente. Es un gráfico de barras apiladas con dos series, y necesita cuatro ajustes antes de parecer algo:

  1. La serie 1 son las fechas de inicio, con Sin relleno. Está para empujar la barra a lo ancho del gráfico, no para verse.
  2. La serie 2 son las duraciones, en días laborables, de =DIAS.LAB(B2;D2;Festivos).
  3. Categorías en orden inverso, en el eje vertical, o la tarea 1 se queda abajo y el plan se lee hacia arriba.
  4. El mínimo del eje horizontal escrito como fecha. En Automático arranca en cero, y todas las barras se dibujan desde el 1 de enero de 1900.
SíntomaAjuste
Las barras salen del borde izquierdoEl mínimo del eje es 0: escribe la primera fecha de inicio
El plan se lee de abajo arribaCategorías en orden inverso
Un bloque macizo antes de cada barraLa serie 1 todavía tiene relleno
El eje muestra 46100 y no una fechaEl formato de número del eje es General

El gráfico no puede saltarse los fines de semana. Dibuja un eje de fechas continuo, así que una tarea que cruza un fin de semana sale dos días más larga de lo que se trabaja, que es justo lo que sí acierta la versión con formato condicional.

Escenario: Selecciona A1:B11, inserta un gráfico de barras apiladas y añade la columna de duraciones como segunda serie. Pon la serie 1 en Sin relleno y el mínimo del eje en 2 de marzo de 2026, y aparecerá el programa.

Pruébalo en la cuadrícula

11¿Sigue Llegando a la Fecha Comprometida?

Lo único que preguntó alguien es si la tienda abre el día que dice el contrato de alquiler. Una celda lo responde:

=DIAS.LAB(FechaTope;MAX(E2:E11);Festivos)-1

MAX sobre la columna de finales es el día en que acaba la obra, porque la última fila no siempre tiene la fecha más tardía cuando hay tareas en paralelo. DIAS.LAB cuenta los dos extremos, así que el menos uno convierte "el mismo día" en cero.

En este programa la fecha tope es el viernes 10 de abril y la respuesta es 12: doce días laborables tarde, encontrados en una celda y no en la obra.

Otra celda dice quién está hoy en obra: =CONTAR.SI.CONJUNTO($B$2:$B$11;"<="&HOY();$D$2:$D$11;">="&HOY()) cuenta las tareas cuyo inicio ya pasó y cuyo fin todavía no.

Negativo es holgura y positivo es retraso. Un plan que responde 0 es un plan sin ningún margen, que conviene saber antes de que llegue el primer gremio.

Escenario: Pon tu fecha contractual en una celda llamada FechaTope y escribe esa fórmula al lado. Después recorta dos días una duración y mira cómo se mueve el número, que es para lo que sirve un programa.

Pruébalo en la cuadrícula

12Siete Cosas que Muerden

  1. =B2+C2-1 en vez de DIA.LAB. Es correcto para días naturales y erróneo para todo lo que presupuesta un gremio, y falla en silencio porque las fechas que devuelve son fechas de verdad.
  2. El menos uno que falta. =DIA.LAB(B2;C2) alarga un día cada tarea; la señal es una tarea de un día que termina mañana.
  3. Sin lista de festivos. Dos festivos en Semana Santa y tres más en primavera mueven un programa de verano una semana laborable entera.
  4. Una fecha en texto dentro del rango de festivos. La columna entera devuelve #¡VALOR!, y el arreglo está en la lista, no en la fórmula.
  5. Fechas escritas a mano en medio de la cadena. Son idénticas a las calculadas y no se mueven cuando cambia una duración.
  6. El sombreado del fin de semana por debajo de la regla de la barra. La barra gana el relleno y la línea de tiempo deja de enseñar los días con la obra cerrada.
  7. Un eje del gráfico en Automático. Las barras dibujadas desde enero de 1900 no son un problema de formato: son el mínimo del eje en cero.

13Ejercicios Rápidos

  1. En la hoja de ejemplo, escribe =DIAS.LAB(B2;D2;$J$2:$J$3) al lado de la primera tarea y arrástralo. Espera 4 en la fila 2 y un número menor que la columna Días en nueve filas.
  2. Rehaz la columna D como =DIA.LAB(B2;C2-1;$J$2:$J$3) y la columna B desde la fila 3 como =DIA.LAB(D2;1;$J$2:$J$3). Espera que el último fin pase del viernes 10 de abril al martes 28 de abril.
  3. Cuenta los días de las dos maneras: =E11-B2+1 para el tramo natural y =DIAS.LAB(B2;E11;$J$2:$J$3) para el laborable. Espera 58 y 40.
  4. Construye la cabecera de la línea de tiempo en quince columnas y aplica =Y(L$1>=$B2;L$1<=$D2). Comprueba que la primera barra ocupa cuatro columnas.
  5. Borra el Viernes Santo de la lista de festivos y recalcula. Espera que la entrega retroceda un día laborable, al lunes 27 de abril.

Para Quedarte Con Esto

Un diagrama de Gantt es la foto de dos columnas de fechas, y la foto solo es tan honesta como ellas. Cualquier discusión sobre un programa de obra es en realidad una discusión sobre si cuatro columnas a la izquierda se usó + o DIA.LAB.

Así que el fallo no está en el gráfico, y tampoco en las duraciones. Cada gremio presupuestó bien su trabajo, en la única unidad que usa un gremio, y después la hoja se gastó esos días en sábados.

Un DIA.LAB en la columna de finales y una lista de festivos con nombre habrían enseñado la fecha real en febrero, cuando todavía era una conversación sobre el alcance y no una carta sobre la entrega. Doce días laborables, diez tareas y ni un solo número equivocado en toda la hoja.

Comparte este artículo:
Volver al Blog
Reto diario · Día 67

Buscar la tarifa de facturación de un consultor en una cuadrícula de tarifas de dos variables con INDICE y COINCIDIR

Un ejercicio nuevo cada día, resuelto en una cuadrícula real.

Resolver el reto de hoy