08. juli 2018 - 11:46Der er
4 kommentarer og 1 løsning
Ændre til arbejdsdøgn
Hej derude, Har et Excel ark som giver mig lidt grå hår. Har en masse processer som tager tid, at producere. Kolonne A indeholder processen, kolonne B indeholder den tid som processen tager og kolonne B er hvornår den ventes færdig. Lige nu en min formel i kolonne C =nu() + værdien i kolonne B F.eks C2 =nu() +B2 Så vil den jo returnere tiden nu + den tid som processen varer og hvis tiden nu er 10/7 kl. 8.00 og processen varer 10 timer, så bliver resultatet 10/7 kl. 18.00. Min udfordring ligger i, at vi kun producerer i 8 timer om dagen, så det rigtige resultat er faktisk 11/7 kl. 9.00, da vi lukker ned hver dag kl. 16. Kan man på en eller anden måde angive et døgn til, at vare fra-til efter behov? Alternativt korte et døgn ned til 8 timer? Jeg kan ikke bare lægge en fast tid til på hver proces, da der kan være mange processer af kortere varighed hver dag. Så kunne være lækkert, hvis jeg kunne lave en formel eller makro som skifter døgn hver dag kl. 16.
Rettelse: Hej derude, Har et Excel ark som giver mig lidt grå hår. Har en masse processer som tager tid, at producere. Kolonne A indeholder processen, kolonne B indeholder den tid som processen tager og kolonne C er hvornår den ventes færdig. Lige nu en min formel i kolonne C =nu() + værdien i kolonne B F.eks C2 =nu() +B2 Så vil den jo returnere tiden nu + den tid som processen varer og hvis tiden nu er 10/7 kl. 8.00 og processen varer 10 timer, så bliver resultatet 10/7 kl. 18.00. Min udfordring ligger i, at vi kun producerer i 8 timer om dagen, så det rigtige resultat er faktisk 11/7 kl. 9.00, da vi lukker ned hver dag kl. 16. Kan man på en eller anden måde angive et døgn til, at vare fra-til efter behov? Alternativt korte et døgn ned til 8 timer? Jeg kan ikke bare lægge en fast tid til på hver proces, da der kan være mange processer af kortere varighed hver dag. Så kunne være lækkert, hvis jeg kunne lave en formel eller makro som skifter døgn hver dag kl. 16.
Prøv med denne makro, som tester hvor mange rækker der er i kolonne B og lægger sluttidspunktet for hver proces ind i kolonne D.
Sub BeregnSlutTidspunkt() Dim Start, Slut, LastRow, Addday As Long LastRow = Range("B65536").End(xlUp).Row For x = 2 To LastRow If Now() - Date < 8 / 24 Then Start = Date + 8 / 24 Else If Now() - Date >= 16 / 24 Then Start = Date + 1 + 8 / 24 Else Start = Now() End If End If Addday = Int(Cells(x, 2) * 3) If Start - Int(Start) + (Cells(x, 2) - 1 / 3 * Int(Cells(x, 2) / (1 / 3))) > 16 / 24 Then End If Slut = Start + Addday + (Cells(x, 2) - 1 / 3 * Int(Cells(x, 2) / (1 / 3))) If Slut - Int(Slut) > 16 / 24 Then Slut = Slut + 16 / 24 End If Cells(x, 4) = Slut Addday = 0 Next End Sub
To rettelser, to unødvendige linjer fjernet og nu er der taget hensyn til at nogle processer skal startes senere end nu.
Sub BeregnSlutTidspunkt() Dim Start, Slut, LastRow, Addday As Long LastRow = Range("B65536").End(xlUp).Row For x = 2 To LastRow If Now() - Date < 8 / 24 Then Start = Date + 8 / 24 Else If Now() - Date >= 16 / 24 Then Start = Date + 1 + 8 / 24 Else Start = Now() End If End If Addday = Int(Cells(x, 2) * 3) Slut = Application.Max(Start, Cells(x,3)) + Addday + (Cells(x, 2) - 1 / 3 * Int(Cells(x, 2) / (1 / 3))) If Slut - Int(Slut) > 16 / 24 Then Slut = Slut + 16 / 24 End If Cells(x, 4) = Slut Addday = 0 Next End Sub
Virker ikke helt optimalt ift mit behov, men et ganske udemærket forsøg. Tak mange gange. Jeg har lagt en faktor værdi ind i mine tider, så det passer nogenlunde. God weekend.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.