1 votos

Excel - contar los días únicos en un rango de fecha de inicio y fin

¡Feliz año nuevo!

Tengo una hoja de cálculo de Excel llena de fechas de inicio y fin (A2:B7). Mi interés es intentar obtener los días únicos en un intervalo.

He investigado pero no puedo encontrar ninguna solución a esto, la mayoría de los hilos tienen que ver con buscar días únicos en una sola columna. Pero mi interés es obtener los días únicos en un intervalo de fechas de inicio y fin (A2:B7).

He creado el Excel como ejemplo (abajo), con el resultado esperado en la fila F8. También he creado un calendario lateral como ejemplo (los días marcados en verde son los que la función debería contar).

Contar días únicos en un rango de fechas

Contar días únicos en un rango de fechas

No tengo ni idea de cómo obtener este resultado usando una función debido a mi conocimiento limitado de Excel.

¿Alguien podría tomarse el tiempo para intentar ayudarme a descubrir cómo puedo obtener este resultado?

0voto

Reddy Lutonadio Puntos 9

Puedes usar una función de VBA para lograrlo. La función a continuación calcula el número de días únicos entre las fechas de inicio y final dadas. Las toma como argumentos. Utiliza un diccionario para obtener las fechas de cada fila. Luego elimina las fechas que no cumplen con los criterios. Finalmente, devuelve el número de fechas únicas.

Función UniqueDaysBetween

Function UniqueDatesBetween(startd As Range, endd As Range) As Integer

    Dim d As Object
    Dim lrow As Integer
    Dim sdate, edate As Date

    'Crear un diccionario
    Set d = CreateObject("scripting.dictionary")
    'Obtener la última fila de la columna A
    lrow = Cells(Rows.Count, 1).End(xlUp).Row

    For x = 2 To lrow
        'Obtener las fechas de inicio y fin para cada fila
        sdate = Range("A" & x).Value
        edate = Range("b" & x).Value

        While sdate <= edate
            'Agregar las fechas al diccionario
            d(sdate) = sdate
            sdate = sdate + 1

        Wend

    Next x

    For Each vdate In d
        'Eliminar la fecha si no está en el rango de criterios
        If Not (vdate >= startd And vdate < endd) Then
            d.Remove vdate
        End If
    Next vdate
    'Obtener el número de días únicos
    UniqueDatesBetween = d.Count

End Function

Demostración de la función UniqueDaysBetween

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X