Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz bitpork #44208 üzenetére

    Szia,

    Próbáld ki ezt az UDF-et:

    Function RemainingDays(keydate As Date, Optional period As Long = 180, Optional maxdays As Long = 42) As Long
    Dim wsRoutes As Worksheet
    Dim c As Long
    Dim ElapsedDays As Long
    Dim LastRow As Long
    Dim travelDays As Long

    Set wsRoutes = ThisWorkbook.Sheets("Ark1")

    With wsRoutes
    LastRow = .Range("C" & Rows.Count).End(xlUp).Row

    Dim splitDate
    Dim travelStart As Date
    Dim travelEnd As Date

    'loop thorugh travel dates to find matching records
    For c = LastRow To 2 Step -2

    'separate merged travel start & end dates
    splitDate = Split(.Cells(c, "C"), "-")

    'check only arrays with 2 elements
    'split generates 0-based arrays
    If UBound(splitDate) = 1 Then

    'try to convert strings to date
    travelStart = DateSerial(Right(Trim(splitDate(0)), 4), Mid(Trim(splitDate(0)), 4, 2), Left(Trim(splitDate(0)), 2))
    travelEnd = DateSerial(Right(Trim(splitDate(1)), 4), Mid(Trim(splitDate(1)), 4, 2), Left(Trim(splitDate(1)), 2))

    'find the row which has travel start earlier then given keydate
    If travelStart <= keydate Then
    'Debug.Print "KeyStart: " & keydate - period & " KeyEnd: " & keydate

    If travelEnd >= keydate - period Then
    travelDays = travelDays + .Cells(c, "L")
    'Debug.Print vbTab & "Row: " & c & " TravelStart: " & travelStart & " TravelEnd: " & travelEnd & " Days: " & .Cells(c, "L")
    End If
    End If

    End If
    Next c

    RemainingDays = maxdays - travelDays

    End With

    End Function

    Használata pedig annyi, hogy megadsz neki egy dátumot és ő az Ark1 füzeten alulról felfelé haladva megkeresi, hogy az utazások alapján melyik sorok L-oszlopbában lévő számokat kell összegezni.

    Ha nem egy mezőben lennének szövegként az utazási dátumok felsorolva, hanem különálló rekordonként akkor egy SZUMHATÖBB is elég lehet. Feltételezve, hogy a problémát jól értettem.

    üdv

Új hozzászólás Aktív témák

Hirdetés