Función día.lab

Necesitaría una función igual que la que tiene excel "día.lab", pero que considere los sábados como festivos.
Respuesta
1
Pulsa Alt+F11
Pulsa INSERTAR y luego MODULO
Allí copia el siguiente Código:
Sub worksheet_change(ByVal target As Range)
Dim Lun, Mar, Mie, Jue, Vie, Sab, Dom, Fecha, Laborable
If target = 1 Then
Fecha = Range("LaFecha")
Laborable = diasem(Fecha)
If Fecha = 1 Or Fecha = 2 Then
Range("Resultado").Value = "Dia no laborable"
Else
Range("Resultado").Value = "Dia laborable"
End If
End If
End Sub
Luego dale el Nombre de La fecha al rango donde estará la fecha a evaluar y Resultado al rango donde estará la respuesta esperada.
¿Cuéntame cómo te va con el código?
RCh.
Perdona pero no entiendo bien el código, ¿puedes mandarme el resultado mediante un adjunto?
Gracias
Perdón por mi error quise decir:
Necesitaría una función igual que la que tiene excel "día.lab", pero que considere los sábados como laborables.
Si pudiera ser mandame un adjunto con la posible solución
Gracias
Ok que cosidere solom a los domingos como no laborables, ¿si?
Usa esta fórmula:
=SI(DIASEM(D4)=1;"Dia no laborable";"Dia laborable")
Donde D4 es la celda donde esta la fecha a evaluar.
Saludos,
RCh.
Viva chavez!

6 respuestas más de otros expertos

Respuesta
1
Prueba con esta y califícala. Pero por favor tienes que calificar la pregunta anterior porque no está cerrada, sino se llena el máximo de preguntas y no puedo recibir más preguntas.
Gracias.
Sub pru()
MsgBox DiasLaborablesYSabados("01-11-2006", "14-11-2004", Range("i13:i16"))
End Sub
Function DiasLaborablesYSabados(Fecha_inicial As Date, Fecha_Final As Date, Optional Festivos As Range) As Date
Dim Laborables As Long
Dim i As Long
Dim c As Variant
Dim F As Long
Dim esta As Boolean
esta = False
Laborables = 0
Dim Dias As Long
Dias = InputBox("Digite el numero de días", Dias, 0)
Fecha_Final = Fecha_inicial + Dias
For i = Fecha_inicial To Fecha_Final
If Weekday(i, vbMonday) = 7 Or Weekday(i, vbMonday) = 6 Then
NoLaborales = NoLaborales + 1
End If
Next i
Fecha_Final2 = Fecha_inicial + Dias + NoLaborales - 1
For Y = Fecha_inicial To Fecha_Final2
If Weekday(Y, vbMonday) = 7 Or Weekday(Y, vbMonday) = 6 Then
NoLaborales2 = NoLaborales2 + 1
End If
Next Y
Fecha_Final = Fecha_Final + NoLaborales2 - 1
'End If
DiasLaborablesYSabados = Fecha_Final
End Function
Respuesta
1
Esta función no considera los sábados y domingos, es decir, los considera como festivos, por lo que no entiendo la pregunta. ¿Podrías poner un ejemplo?
Perdón por mi error quise decir laborable
Necesitaría una función igual que la que tiene excel "día.lab", pero que considere los sábados como laborables.
Gracias
[email protected]
Excel no tiene una función como la que buscas, sin embargo tu puedes crearla dentro del VB de Excel y la puedes aplicar igual que una que ya este predeterminada te paso la función que encontré en Internet:
Option Explicit
'Funcion que encuentra el siguiente dia hábil
'** ARGUMENTOS
'Fecha_Inicial = fecha a partir de la cual se empieza a contar
'Dias_Laborables = numeros de dias que se quieren contar
'Dias_Festivos = dias a omitir en la cuenta como fechas especiales
'Omitir_Dias = dias a omitir como dia de la semana
' Domingo = 1
' Lunes = 2
' etc...
' Sabado = 7
'Devuelve el dia habil siguiente como fecha
Public Function Dia_Laborable(ByVal Fecha_Inicial As Date, _
ByVal Dias_Laborables As Integer, _
ByVal Dias_Festivos As Range, _
ByVal Omitir_Dias As Range) As Date
Dim co1 As Integer
Dim r As Range
Dim EsFestivo As Boolean
Dim EsOmitido As Boolean
Dim Direccion As Integer
'Los dias laborables no pueden ser cero
If Dias_Laborables <> 0 Then
'Para saber si aumenta o disminuye la fecha
Direccion = 1
If Dias_Laborables < 0 Then Direccion = -1
Do
EsFestivo = False
EsOmitido = False
'Aumentamos o disminuimos en uno la fecha inicial
Fecha_Inicial = Fecha_Inicial + Direccion
'Buscamos en los dias festivos
For Each r In Dias_Festivos
If r.Value = Fecha_Inicial Then
'Si es festivo sale del ciclo
EsFestivo = True
Exit For
End If
Next r
'Si es festivo no es necesario buscar en dias omitidos
If Not EsFestivo Then
'Buscamos en dias omitidos en caso de que no sea festivo
For Each r In Omitir_Dias
If r.Value = Weekday(Fecha_Inicial) Then
'Si es omitido salimos del ciclo
EsOmitido = True
Exit For
End If
Next r
End If
'NO deber ser festivo ni omitido para incrementar
If Not EsFestivo And Not EsOmitido Then
co1 = co1 + 1
End If
DoEvents
'Continuamos mienstras sea menor a los dias_laborables
Loop While co1 < Abs(Dias_Laborables)
'Asignamos la fecha encontrada a la funcion
Dia_Laborable = Fecha_Inicial
Else
'Si es cero devuelve un error tipo #!VALOR¡
Dia_Laborable = ""
End If
End Function
Respuesta
1
Prueba lo que te envío por correo, si te sirve, finaliza, si no, dime por qué para mejorarla.
Perdón pero he estado fuera.
Lo que me mandas está muy bien pero necesito que a partir de una fecha inicial conocida y añandiendo los días laborables que quiera (en otra casilla) obtener la fecha final como resultado
Es decir igual que día.lab pero con sábados como laborables
Gracias
Usa la función que te envié, poniendo en una celda la fecha inicial y en otra una fecha final cualquiera, luego lígalas con la función =DiasLab(inicial, final), donde inicial y final son las celdas con las fechas.
Luego, con el menú > Herramientas > Buscar objetivo
pon los datos:
Definir celda: la de la fórmula
Con el valor: los días laborables que quieres sumar
Para cambiar la celda: la celda de fecha final
y te calculará la fecha necesaria para que los días sean los correctos.
Si no te sirve, vuelve a escribirme.
Respuesta
Como esta... pues la verdad no entiendo bien su pregunta. DÍA.LAB por definición, es una función que cuenta el numero de días hábiles entre dos fechas, no tiene en cuenta los Sábados ni los Domingos, así como tampoco los días que se personalicen en la lista para el conteo de días hábiles.
Así las cosas, si su pregunta es que necesita una función que considere los sábados con festivos o días no laborales, pues ya la tiene. Se llama DÍA.LAB
Respuesta
Pues es que precisamente eso hace esta función... considerarlos NO laborables.
Respuesta

Ninguna de las respuestas en la mejor opción. Descargue e instale el manual y ejemplos para Access y Excel del siguiente link:

https://mega.nz/#!TMkFES6D!6RGkDnt_1lG6V5RkDMYxE3KBpZIwm3UECAMuIcjbf_Q 

Con un pequeño ajuste puede exlcuir el día sábado. Encontrará muchas cosas más.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas