Ayuda funcion contar dias festivos entre dos fecha |
Responder | Página 12> |
Autor | |
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Tema: Ayuda funcion contar dias festivos entre dos fecha Enviado: 31/Enero/2020 a las 12:14 |
Buenos dias, necesito ayuda para realizar la funcion que me devuelva los sabados y domingos existentes entre dos fechas. Os dejo lo que he echo yo:
Function dias_festivos(ByVal fechaInicial As Date, fechaFinal As Date) Dim fechainicio As Date Dim fechafin As Date Dim diferenciadias As Integer Dim diasemana As Integer Dim contador As Integer Dim i As Integer On Error GoTo controlaerror diferenciadias = fechafin - fechainicio For i = 1 To diferenciadias diasemana = Weekday(fechainicio, vbMonday) If diasemana = 6 And diasemana = 7 Then contador = contador + 1 End If fecha inicio = fechainicio + 1 Next i controlerror: Exit Function End Function |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Enviado: 31/Enero/2020 a las 16:21 |
Hola seralmo y bienvenido al foro, Curiosa técnica... Yo lo haría así:
Un bucle desde el primer día hasta el último. La conversión a Long por igualar tipos de variables. Después evalúo la fecha sin indicar el primer día de la semana para poder utilizar las constantes vbSunday y vbSaturday. Ese código se pude complicar si tienes una tabla de festivos... Un saludo |
|
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Enviado: 31/Enero/2020 a las 18:22 |
Buenas tardes, gracias por la ayuda. Correcto, tengo una tabla de festivos que hay que incluir entre las fechas y ademas tengo que hacer otra función donde aparezca el detalle, por ejemplo si son 3 sábados, 4 domingos y 2 festivos. Me podéis ayudar, como puedo incluir los festivos de la lista y que funcion seria para sacar los detalles.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Enviado: 01/Febrero/2020 a las 09:33 |
En lugar de que la función devuelva un solo valor, utiliza variables públicas para diferenciar sábados de domingos.
Para los festivos necesitas utilizar una tabla dónde, o bien indicas las fechas una por una (con el mantenimiento que eso conlleva) o bien indicas dia y mes de la festividad para que la tabla te valga para siempre. El problema son siempre las fiestas "moviles": semana santa... pero también existen funciones para calcular eso. En definitiva la técnica como yo lo haría es: - Tener una tabla con los campos DiaFestivo y MesFestivo - Tener una función para calcular la semana santa (aquí tienes una: http://excelgali.foroactivo.com/t155-calcular-semana-santa-y-pascua) - Utilizar 3 variables para devolver los 3 valores o una esytructura Type - Tener una función parecida a la anterior dónde: + creas un array con todos los festivos del periodo (función DateSerial) + recorres las fechas del intervalo y, en cada registro, realizas una evaluación de la fecha: * si es sabado incrementas el contador de sábados * si es domingo incrementas el contador de domingos * si está dentro del array, y no es sábado ni domingo (porque ya estan en cualquiera de los otros contadores), incrementas el contador de festivos. En esencia esa es la táctica que utilizaría. Para todo ello encontraras literatura abundante. Cuando te encalles con algo puntual, preguntas. Un saludo |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3065 |
Enviado: 01/Febrero/2020 a las 10:02 |
A ver si te ayuda este hilo que abrí hace un tiempo.
http://www.mvp-access.com/foro/buscando-funcion-de-chea_topic84686.html?KW=Sabados |
|
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Enviado: 01/Febrero/2020 a las 12:57 |
Buenas, lo que necesito es incluir en el contador de festivos (sábado y domingos) que hay entre el 01/01/2017 y el 31/12/2017 el festivo 01/01/2019 y sucesivos y después sacar en otra función el detalle de los sábados y domingos y numero de festivos, como por ejemplo 43 sábados, 44 domingos y 4 festivos. Gracias
|
|
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 01/Febrero/2020 a las 14:54 |
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3065 |
Enviado: 01/Febrero/2020 a las 17:22 |
http://sqlraipon.blogspot.com/2018/03/calculo-de-dias-laborables-entre-fechas_20.html o https://www.maximoaccess.com/t11173-resolvidocontar-sabados-entre-duas-datas Public Function ContaSabados(DataInicio As Date, DataFim As Date) As Long
'By JPaulo ® Maximo Access Dim ContaDias As Long Dim PercorreDatas As Date Dim inConta As Long ContaDias = 0 For PercorreDatas = DataInicio To DataFim inConta = Weekday(PercorreDatas) '1-Domingo 7-Sábado If inConta = 7 Then ContaDias = ContaDias + 1 End If Next PercorreDatas ContaSabados = ContaDias MsgBox ContaSabados Editado por rokoko - 01/Febrero/2020 a las 17:34 |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3065 |
Enviado: 01/Febrero/2020 a las 18:20 |
Con lo que te he puesto justo arriba(ContaSabados) tienes sabados, para domingos la modificas. Para festivos con un DCount que ataque a la tabla donde guardas los festivos...pero lo dejo para que indages...a mi ya me a salido.
|
|
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Enviado: 01/Febrero/2020 a las 20:13 |
Buenas, la función para sacar los sábados y domingos ya me la puso xavi mas arriba, lo que necesito y sigo indagando es como incluir el listado de 10 festivos que tengo. Por otro lado no consigo sacar la función donde se detalle con números y palabras el numero de festivos como puse en el ejemplo (32 sabados, 33 domingos y 3 festivos). Eso es lo que necesito, pero vamos estoy superagradecido por la ayuda que me estáis facilitando todos. Este foro es fantastico para ayudar y que te ayuden, y para seguir aprendiendo dia a dia este lenguaje maravilloso a la par que complicado que es VBA.
|
|
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Enviado: 02/Febrero/2020 a las 03:11 |
Buenas noches ya he conseguido con vuestra ayuda incluir mi tabla de festivos. Ahora necesito una funcion que me detalle los dias festivos entre la fecha inicio y la fecha fin. Es decir que en la celda me aparezca por ejemplo 11 sabados 12 domingos 1 festivo. Me podeis ayudar con esta funcion? Muchas gracias
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3065 |
Enviado: 02/Febrero/2020 a las 08:33 |
Has conseguido que por separado te de los resultados que quieres??
Si es asi solo tendrias que asignar esos resultados a un cuadro de texto.... Algo asi. Me.nombrecuadrotexto= la funcion ... O Guardar el resultado de la funcion en una variable y me.nombrecuadrotexto= la varibla |
|
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Enviado: 02/Febrero/2020 a las 09:50 |
No, he conseguido realizar la funcion primera, es decir obtener el total de sabados y domingos entre dos fechas incluidos los dias festivos de la tabla. Ahora necesito el detalle.
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3065 |
Enviado: 02/Febrero/2020 a las 12:03 |
El detalle a que llamas?? el resultado de esa funcion?? no acabo de entenderte.....
|
|
seralmo
Nuevo Unido: 31/Enero/2020 Localización: madrid Estado: Sin conexión Puntos: 20 |
Enviado: 02/Febrero/2020 a las 12:06 |
Con el detalle me refiero a que la función tiene que devolver en la celda el detalle de los dias festivos que se comprenden entre esa fecha, es decir x domingos, y sabados y z festivos.
|
|
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |