Sunteți pe pagina 1din 8

Excel Total (Por L.

Quezada)
Nmero de das hbiles entre dos fechas
Q: Cmo puedo calcular el nmero de das hbiles entre dos fechas, es decir, excluyendo sbados y domingos? A: Utilizando la funcin DIAS.LAB, includa en el complemento Herramientas para Anlisis de Excel. DIAS.LAB no es una funcin nativa de Excel, sino que pertenece al complemento mencionado. Un complemento (add-in, en ingls), es un "miniprograma" o conjunto de caractersticas que no tiene de manera predeterminada Excel y que aumentan o extienden su funcionalidad. En el caso del complemento Herramientas para anlisis, este incluye una serie de interfases y funciones para anlisis financiero y cientfico. Para poder utilizar las caractersticas del referido complemento, necesitamos instalarlo primero. Es sencillo: Ejecutamos Herramientas - Complementos... para abrir el cuadro de dilogo Complementos, y activamos la casilla de verificacin correspondiente:

Aceptamos el cuadro. Podemos ver ahora que el men herramientas contiene un nuevo submen llamado Anlisis de datos, el cual contiene las nuevas funcionalidades instaladas:

Asimismo, podemos ver que tenemos nuevas funciones, incluyendo la que nos interesa, DIAS.LAB, que estar includa en la categora Fecha y hora en el cuadro Insertar funcin:

Seleccionamos la funcin y damos Aceptar.

Ingresamos nuestra fechas inicial y final como primeros dos argumentos. El tercer argumento, Festivos, lo usamos en caso de que queramos que Excel excluya los das festivos del clculo. En caso afirmativo, elaboramos una lista en nuestra hoja con los das festivos que queremos que sean excludos. Finalmente, ingresamos el rango de esta lista como argumento Festivos (o bin podemos ingresar las fechas directamente con la funcin FECHA).

De cualquier forma, el argumento Festivos es opcional, podemos prescindir de l. Si damos clic en el link Ayuda sobre esta funcin, veremos que Excel no dispone de ayuda para esta funcin, ya que el fabricante del complemento, no la incluy en el mismo.

DIAS.LAB
Mostrar todo Devuelve el nmero de das laborables entre fecha_inicial y fecha_final. Los das laborables no incluyen los fines de semana ni otras fechas que se identifiquen en el argumento festivos. Utilice DIAS.LAB para calcular el incremento de los beneficios acumulados de los empleados basndose en el nmero de das trabajados durante un perodo especfico. Si esta funcin no est disponible y devuelve el error #NOMBRE?, instale y cargue el programa de complementos Herramientas para anlisis. Cmo? 1. En el men Herramientas, elija Complementos. 2. En la lista Complementos disponibles, seleccione el cuadro Herramientas para anlisis y, a continuacin, haga clic en Aceptar. 3. Si es necesario, siga las instrucciones del programa de instalacin. Sintaxis DIAS.LAB(fecha_inicial;fecha_final;festivos) Importante Las fechas deben introducirse mediante la funcin FECHA o como resultado de otras frmulas o funciones. Por ejemplo, utilice FECHA(2008;5;23) para el da 23 de mayo de 2008. Pueden producirse problemas si las fechas se introducen como texto. Fecha_inicial Fecha_final es una fecha que representa la fecha inicial. es una fecha que representa la fecha final.

Festivos es un rango opcional de una o varias fechas que deben excluirse del calendario laboral, como los das festivos nacionales y locales. La lista puede ser un rango de celdas que contengan las fechas o una constante matricial de los nmeros de serie que representen las fechas. Observaciones Microsoft Excel almacena las fechas como nmeros de serie secuenciales para que puedan utilizarse en los clculos. De forma predeterminada, el 1 de enero de 1900 es el nmero de serie 1 y el 1 de enero de 2008 es el nmero de serie 39448 porque viene 39.448 das despus del 1 de enero de 1900. Microsoft Excel para Macintosh utiliza un sistema de fechas predeterminado diferente. Si uno de los argumentos no es una fecha vlida DIAS.LAB devuelve el valor de error #VALOR!. Ejemplo El ejemplo puede resultar ms fcil de entender si lo copia en una hoja de clculo en blanco. Cmo?

1 2 3 4

5 6 A B Fecha Descripcin 01-10-2008 Fecha inicial de un proyecto 01-03-2009 Fecha final de un proyecto 26-11-2008 Da festivo 04-12-2008 Da festivo 21-01-2009 Da festivo Frmula Descripcin (Resultado) =DIAS.LAB(A2;A3) Nmero de das laborables entre las fechas inicial y final anteriores (108) =DIAS.LAB(A2;A3;A4) Nmero de das laborables entre las fechas inicial y final anteriores, excluido el primer da festivo (107) =DIAS.LAB(A2;A3;A4:A6) Nmero de das laborables entre las fechas inicial y final anteriores, excluidos todos los das festivos (105) Nota Para convertir el rango de celdas utilizado para los das festivos del ltimo ejemplo en una constante matricial, seleccione la referencia A4:A6 en la frmula y presione F9.

Funcin para el clculo de das laborables en SQL Funcin que nos permite calcular el nmero de das laborables entre una fecha y otra, con las validaciones pertinentes. /*Primeramente declaramos que vamos a crear una funcion, en este caso se llama Dif Dias y recibe dos parmetros, la fecha inicial del perodo y la final*/ CREATE FUNCTION DifDias(@StartDate DATETIME,@EndDate DATETIME) RETURNS integer AS Begin //Con esta variable calculamos cuantos dias "normales" hay en el rango de fechas DECLARE @DaysBetween INT //Con esta variable acumulamos los dias totales DECLARE @BusinessDays INT //esta variable nos sirve de contador para saber cuando lleguemos al ultimo dia del rango DECLARE @Cnt INT /*esta variable es la que comparamos para saber si el dia que esta calculando es sbado o domingo*/ DECLARE @EvalDate DATETIME /*Esta par de variables sirven para comparar las dos fechas, si son iguales, la funcion nos regresa un 0*/ DECLARE @ini VARCHAR(10) DECLARE @fin VARCHAR(10) //Inicializamos algunas variables SELECT @DaysBetween = 0 SELECT @BusinessDays = 0 SELECT @Cnt=0 //Calculamos cuantos dias normales hay en el rango de fechas SELECT @DaysBetween = DATEDIFF(DAY,@StartDate,@EndDate) + 1 /*Ordenamos el formato de las fechas para que no importando como se proporcionen se comparen igual*/ SELECT @ini = (SELECT CAST((CAST(datepart(dd,@StartDate)AS VARCHAR(2))+'/'+ CAST(datepart(mm,@StartDate)AS VARCHAR(2))+'/'+CAST(datepart(yy,@StartDate)AS VARCHAR(4))) as varchar(10))) SELECT @fin = (SELECT CAST((CAST(datepart(dd,@EndDate)AS VARCHAR(2))+'/'+ CAST(datepart(mm,@EndDate)AS VARCHAR(2))+'/'+ CAST(datepart(yy,@EndDate)AS VARCHAR(4)))as varchar(10))) //Se comparan las dos fechas IF @ini <>@fin BEGIN /*Si la diferencia de fechas es igual a dos, es porque solo ha transcurrido un dia, asi que solo se valida que no vaya a marcar dias de mas*/

IF @DaysBetween = 2 BEGIN SELECT @BusinessDays = 1 END ELSE BEGIN WHILE @Cnt < @DaysBetween BEGIN /*Se Iguala la fecha a que vamos a calcular para saber si es sabado o domingo en la variable @EvalDate sumandole los dias que marque el contador, el cual no debe ser mayor que el numero total de dias que hay en el rango de fechas*/ SELECT @EvalDate = @StartDate + @Cnt /*Utilizando la funcion datepart con el parametro dw que calcula que dia de la semana corresponde una fecha determinada, determinados que no sea sabado (7) o domingo (1)*/ IF ((datepart(dw,@EvalDate) <> 1) and (datepart(dw,@EvalDate) <> 7) ) BEGIN /*Si no es sabado o domingo, entonces se suma uno al total de dias que queremos desplegar*/ SELECT @BusinessDays = @BusinessDays + 1 END //Se suma un dia mas al contador SELECT @Cnt = @Cnt + 1 END END END ELSE BEGIN //Si fuese cierto que las fechas eran iguales se despliage cero SELECT @BusinessDays = 0 END //Al finalizar el ciclo, la funcion regresa el numero total de dias return (@BusinessDays) END Autor: Rosendo Lopez Robles

Para Calcular das Hbiles http://www.diashabiles.com/

S-ar putea să vă placă și