** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Ayuda funcion contar dias festivos entre dos fecha
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAyuda funcion contar dias festivos entre dos fecha

 Responder Responder Página  12>
Autor
Mensaje Invertir el orden de clasificación
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5976
Enlace directo a este mensaje Tema: Ayuda funcion contar dias festivos entre dos fecha
    Enviado: 05/Febrero/2020 a las 23:24

Hola seralmo, VBA no es 'VBA y punto'. VBA es Visual Basic para Aplicaciones, pero VBA para Access trabaja de forma diferente que VBA para Excel, cualquiera de los 2 anteriores trabaja diferente que VBA para Power Point, ...  etc.  


Esto es así porque cada aplicación de Office tiene sus propios objetos ,  que las otras aplicaciones no tienen.


Respecto al foro Acces y VBA (comprendo que puede llevar a confusión) se refiere a VBA para Access. En este foro de Excel (aunque no se especifique) se tratan temas tanto de fórmulas como de VBA para Excel, ...


Mejor abre una consulta nueva, para no mezclar en el hilo temas diferentes que lleven a confusión, e indica en que rango tienes tus fechas y en que rango tienes los festivos (rangos reales).



Saludos desde Tenerife.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14738
Enlace directo a este mensaje Enviado: 05/Febrero/2020 a las 22:36
La pregunta la pones en el apartado de Access y VBA y la solución que has colgado incluye palabras como Cells, Range, xlDown.... que, si bien es VBA, es de Excel, no de Access.

Me sorprende bastante que cuelgues una solución que no sabes ni en que programa se ejecuta, simplemente. 

Muevo el hilo a Excel y lo cierro.



Editado por xavi - 05/Febrero/2020 a las 22:37
Xavi, un minyó de Terrassa

Mi web
Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje Enviado: 05/Febrero/2020 a las 22:28
Buenas noches, no entiendo lo que me dices, la pregunta la puse en el apartado de access y vba, y la solucion que he colgado es con codigo vba, no entiendo lo que me dices de Excel, si se puede hacer con Excel genial, pero yo tenia una duda de vba y he puesto la solución en vba, no veo el problema. Un saludo
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14738
Enlace directo a este mensaje Enviado: 05/Febrero/2020 a las 22:19
Hola,

La pregunta está colgada en el foro de Access y, en consecuencia, has recibido una respuesta adecuada a Access. Ahora cuelgas una solución de Excel... dónde se podría calcular eso sin necesidad de utilizar VBA.

En fin...


Xavi, un minyó de Terrassa

Mi web
Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje Enviado: 05/Febrero/2020 a las 10:10
Buenos días, os dejo por aquí la solución:

Function CuentaFestivos(FechaInicio As Date, FechaFin As Date) As Integer

 

    Dim SumaFestivos As Integer

    Dim I As Date

    Dim J As Integer

    Dim UltimaFila As Integer

   

    UltimaFila = Range("A1048576").End(xlUp).Row

   

    For I = FechaInicio To FechaFin

   

        If Weekday(I, vbMonday) > 5 Then

            'Fin de semana

            SumaFestivos = SumaFestivos + 1

        Else

            'Hay que comprobar si es Festivo en la lista

            For J = 2 To UltimaFila

           

                If Cells(J, 1).Value = I Then

                    'Existe luego hay que sumarlo ya que es festivo y no es Sabado ni Domingo

                     SumaFestivos = SumaFestivos + 1

                     Exit For

                End If

            Next J

           

        End If

            

    Next I

      

    CuentaFestivos = SumaFestivos

   

End Function

 

Function CuentaFestivosII(FechaInicio As Date, FechaFin As Date) As String

 

    Dim SumaFestivos As Integer

    Dim SumaSabados As Integer

    Dim SumaDomingos As Integer

    Dim I As Date

    Dim J As Integer

    Dim UltimaFila As Integer

   

    UltimaFila = Range("A1048576").End(xlUp).Row

   

    For I = FechaInicio To FechaFin

   

        Select Case Weekday(I, vbMonday)

            Case 6

                'Sabados

                SumaSabados = SumaSabados + 1

            Case 7

                'Domingos

                SumaDomingos = SumaDomingos + 1

            Case Else

                'Hay que comprobar si es Festivo en la lista

                For J = 2 To UltimaFila

           

                    If Cells(J, 1).Value = I Then

                        'Existe luego hay que sumarlo ya que es festivo y no es Sabado ni Domingo

                        SumaFestivos = SumaFestivos + 1

                        Exit For

                    End If

            Next J

           

        End Select

            

    Next I

      

    CuentaFestivosII = SumaSabados & " Sábados, " & SumaDomingos & " Domingos y " & SumaFestivos & " Festivos"

   

End Function


Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje 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.

Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3063
Enlace directo a este mensaje Enviado: 02/Febrero/2020 a las 12:03
El detalle a que llamas?? el resultado de esa funcion?? no acabo de entenderte.....
Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje 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.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3063
Enlace directo a este mensaje 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
Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje 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
Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje 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.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3063
Enlace directo a este mensaje 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.Smile
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3063
Enlace directo a este mensaje 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
Arriba
emiliove Ver desplegable
Administrador
Administrador


Unido: 16/Junio/2009
Localización: Mexico
Estado: Sin conexión
Puntos: 5694
Enlace directo a este mensaje Enviado: 01/Febrero/2020 a las 14:54
Con la tabla números es fácil hacerlo mira aquí

Saludos.
Arriba
seralmo Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 31/Enero/2020
Localización: madrid
Estado: Sin conexión
Puntos: 20
Enlace directo a este mensaje 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
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable