¿Cómo contar los días que hay entre dos fechas, proporcionando una lista de días feriados?

Me encuentro en un dilema desde hace un tiempo a la fecha. Me encuentro desarrollando una pequeña aplicación personal, la cual requiere de lo siguiente:
Tengo una lista de días feriados, los cuales son de lunes a viernes (el resto no tiene relevancia para estos efectos). Estos se encuentran en una tabla llamada "tbl_feriados". Dada una fecha de inicio y una fecha de término, la función VBA debe calcular el total de días que existen en esa tabla.
Hace poco encontré una opción para despejar esta incógnita (la cual es funcional), por medio de una función anidada en una celda de mi hoja en el libro de Excel, pero esto lo debo transpolar a VBA, la anidación de funciones es la siguiente:

=sumaproducto(--esnumero(coincidir(fila(indirecto(a2&":"&b2)),"tbl_feriados",0)))

Tal vez es un poco complejo, ya que he tratado con otras funciones, pero no me han servido, hasta la fecha.
Espero me puedan ayudar a despejar esta duda, la cual es solo la punta del iceberg de todo lo que tengo que hacer y no puedo avanzar sin encontrar la solución a este problema. Espero poder contar con su apoyo, desde ya les doy las

Respuesta
1

Mil disculpas por no haberte contestado. En realidad yo conozco lo que quieras de excel, pero hace muy poco estoy con los tutoriales de macros... Estuve dando clases particulares y no le di bola a esto :( Disculpas nuevamente y espero poder ayudarte en el futuro.

¡Gracias! Nancy Dominguez , gracias de todas formas. Ya he solucionado esta incidencia con una función un tanto compleja y loca, pero que ha cumplido con su cometido.
Ahora estoy en otro problema, tal vez no tan complejo, pero que no he podido solucionar, te dejo el enlace para que lo veas:
Darle formato a una celda de una tabla, según su contenido

Gracias por tu apoyo.

1 respuesta más de otro experto

Respuesta
1

Si he ententido el problema, no parece nesearia una fórmula. Podría ser suficiente la función DIAS.LAB. Por ejemplo:

Sub prueba()
    Dim wksH As Worksheet
    Set wksH = Worksheets("Hoja1")
    With wksH
        MsgBox 1 + .[B2].Value - .[A2].Value - WorksheetFunction.NetworkDays(.[A2].Value, .[B2].Value, Names("tbl_feriados").RefersToRange)
    End With
    Set wksH = Nothing
End Sub

Saludos_

¡Gracias! @jrces . Dentro del día voy a probar el código o su posible variación. Muchas gracias por tu respuesta, de la cual hago retroalimentación una vez que tenga un resultado y las impresiones de su uso (para evaluar la respuesta, la cual se agradece).

@jrces: Estuve probando el código y obtuve los siguientes resultados:
Sin modificaciones, me lanza un error '9' en tiempo de ejecución: Sub índice fuera del intervalo.

Si realizo un cambio en el línea 3, de "Worksheets("Hoja1")" a "Worksheets("Feriados")", me lanza otro error '1004' en tiempo de ejecución: Error definido por la aplicación o el objeto.

Voy a seguir viendo posibles modificaciones a la función, para establecer si sirve o no, aunque el objetivo puntual a cumplir es determinar los días feriados que existe en una tabla, según los dos parámetros entregados. Es una suerte de contarlos, siempre y cuando estén dentro del rango de la fecha, incluyendo ambas fechas.

¿Sigues teniendo problemas? Si es así, podría subir el libro con el que estuve haciendo pruebas.

Saludos_

jrgces te agradezco el apoyo. Me sirvió tu código para armar la lógica de la función, la cual describo más abajo, lo que me llevó a la solución final, por lo que califiqué como "Excelente" tu aporte. En el historial de este post está el resultado de lo que te menciono.

Muchas gracias por tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas