I ovenstående har jeg behov for at vide hvor mange dage der er imellem afrejsedato til næste ankomstdato, vel og mærket pr. ID i en serien med eksempelvis 500 forskellige ID med 10-15 forskellige ankomst- og afrejsedatoer. Data er som udgangspunkt ikke sorteret, så såvel ID som ankomst- og afrejse datoer ligger i vilkårlig rækkefølge
Men betyder det at du ikke kan sortere for at opnå en løsning?
Hvordan tænker du løsningen præsenteret?
Umiddelbart synes jeg at med en korrekt sortering og en formel længst til højre der beregner mellem afrejse og ankomstdato hvor der tages hensyn til ændring i ID give den nødvendige info du efterspørger.
Det var også den løsning jeg selv ville have udtænkt, - men den er ikke fleksibel nok for kunden :-( .... derfor tænker jeg noget vba for indsætter den ekstra kolonne i datasættet med de beregnede resultater
Og hvordan finder du ud af, hvilken ID der hører til næste afrejse/ankomst datoer. Hvor ser du sammenhængen i disse, hvis de eksisterer tilfældige steder i måske 500 rækker? Det må i første omgang, være baseret på et opslag/søgning på en dato, pr ID. Ellers kan jeg ikke umiddelbart se hvordan du vil finde disse antal dage, ud af tilfældige rækker.
Hvad er det egentligt man ønsker at få ud af beregningerne? Medmindre man visuelt vil løbe 500 linier igennem giver opstillingen heller ikke så meget mening.
Hvis jeg har forstået dig ret kunne det måske gøres ved at sætte en ekstra kolonne ind, hvor du blot skrev rækkenummeret, og så med en makro sortere for ID som første prioritet og ankomst som anden prioritet. Så er det simpelt at regne forskellen ud. Derefter bruges kolonnen med rækkenummeret til at sortere tilbage til oprindelige indstilling. Lidt i stil med nedenstående makro:
Sub Macro1() Range("E:E").ClearContents Range("A3:E3").Select Range(Selection, Selection.End(xlDown)).Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("B3:B501" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("C3:C501" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A2:D501") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For x = 1 To 501 If Cells(x, 2) = Cells(x + 1, 2) Then Cells(x, 5) = Cells(x, 4) - Cells(x + 1, 3) End If Next Range("A3:E3").Select Range(Selection, Selection.End(xlDown)).Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range("A3:A501" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A2:E501") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Her er et forslag til en mulig løsning. Om det er sådan, ved jeg ikke. Men du må jo melde ud, på det spørgsmål du selv har stillet. Der er flere spørgsmål i tråden, og forslag.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.