Tal vez haya alguna forma alternativa con funciones propias de Excel, pero me da un poco de flojera buscarla, mucho más divertido he interesante es crear tu propia función personalizada que haga lo que tu quieras, te anexo la primer versión de una fórmula que hace lo que quieres, es parecida a la que usas
=DIA.LAB(A2;30;$D$2:$D$15)
pero esta se llama
=Dia_Laborable(A2,30,D2:D15,E1:E2)
Pero observa como tiene un cuarto argumento, ahí le estoy diciendo que omita días por día de la semana (Lunes, Martes, etc), en este ejemplo en:
E1 = 1
E2 = 7
el 1=Domingo y el 7=Sabado, le estoy diciendo que omita sabados y domingos a parte de los festivos, esto es para que veas que nos regresa el mismo valor que la funcion DIA.LAB pero lo interesante de nuestra función, es que le podemos indicar cualquier dia de la semana, por ejemplo, que solo omita los domingos u considere el sabado como habil a menos que sea festivo, como tu quieres
=Dia_Laborable(A2,30,D2:D15,E1)
Observa como ahora le dijo que solo tome el valor de E1 donde tengo el 1 que es igual al Domingo, has tus pruebas y verifica que obtengas lo que quieres, si encuentras un error o mejora no tardes en decírmelo, aquí va la función, si tienes dudas de como usarla o implementarla, puedes leer el articulo de mi página acerca de las funciones personalizadas, también, puedes solicitar el archivo donde hice las pruebas a mi correo, saludos...
http://www.vbalym.netfirms.com/excel/exfun1.htmlMauricio
MbsARROBAinboxPUNTOnet
Solo sustituye las mayúsculas por su respectivo símbolo
P.D. Si esto resuelve tu pregunta te agradeceré mucho la finalizaras, gracias...
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 mientras sea menor a los dias_laborables
Loop Whi