24. januar 2004 - 23:01Der er
22 kommentarer og 1 løsning
Finde første og sidste dato ud fra et bestemt årstal
Jeg har en tabel med dato i første col. og timer i anden col. Nu vil jeg gerne have timerne mellem den første og den sidste oplistede dato i et bestemt årstal beregnet i C1. Årstallet står i D1.
Jeg har været ved at prøve at sammensætte Lopslag med ÅR() men kunne ikke få det til at virke.
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Jeg forstår ikke helt spørgsmålet. Du har en række "timestamps" med dato (kollonne A) og klokkeslet (kolonne B). I D1 står der et årstal og i C1 vil du så gerne vide, for det angivne år, hvormange timer er der fra først forekommende til sidst forekommende timestamp. Korrekt?
Cirka hvormange år spænder dine data over? Er de sorteret?
Ved DatoCol og TimeCol, klikker du på kolonne bogstavet Ved AAr klikker du ind på cellen ( D1) Formater din celle (C1) som [t]:mm
Public Function FindTimer(DatoCol As Range, TimeCol As Range, AAr As Range) Dim D As Variant, T As Variant, DT() As Variant, R As Long, DCol As Integer, TCol As Integer Dim MaxTid As Variant, MinTid As Variant MinTid = #1/12/2050 11:59:00 PM# DCol = DatoCol.Column TCol = TimeCol.Column R = Cells(65536, DCol).End(xlUp).Row D = Range(Cells(1, DCol), Cells(R, DCol)) T = Range(Cells(1, TCol), Cells(R, TCol)) ReDim DT(R) For i = 1 To R DT(i) = D(i, 1) + T(i, 1) If Year(DT(i)) = AAr.Value Then If DT(i) < MinTid Then MinTid = DT(i) If DT(i) > MaxTid Then MaxTid = DT(i) End If Next FindTimer = MaxTid - MinTid End Function
iqrn-> Det er kun dato der står i col. A og en maskines timeantal for den angivne dato i col. B. Nu vil jeg så gerne finde det antal timer maskinen har kørt mellem den første og den sidste angivne dato i et bestemt år.
kabbak-> Jeg prøver din funktion, men har selve regnearket derhjemme.
Du burde også kunne nøjes med en sum-formel, men det kræver at du har start dato i D1 (01012003) og slut dato i E1 (31122003), prøv så med denne array-formel:
=SUM((A1:A25>=E3)*(A1:A25<=F3)*(B1:B25)) - du retter selv A1/B1 til din startceller og A25/B25 til dine slutceller.
-->kabbak: jeg kunne ikke få din funktion til at virke, ligemeget hvad jeg gør så fremkommer #VÆRDI!
-->tobler: din formel =SUM((A1:A25>=(("01-01-"&D1)*1))*(A1:A25<=(("31-12-"&D1)*1))*(B1:B25)), er sådan set god nok, men den summerer timerne for det valgte år. Den skulle jo finde differensen mellem den første og den sidste indtastning.
-->bak: Kunne ikke få din formel til at virke, men har omskrevet den til følgende =(MAKS((B3:B9)*(ÅR(A3:A9)=D4))-(MIN((B3:B9)*(ÅR(A3:A9)>D4-1)))), men den virker kun på det første år der er listet op i col. A ved de efterfølgende år er det kun maks værdien der vises. Hvorfor mon det?
Nyt forsøg, jeg tror det var overskrifter, der gør det.
FirstDatoCell = første celle med dato FirstTimeCell = første celle med tid AAr = cellen med årstal
Public Function FindTimer(FirstDatoCell As Range, FirstTimeCell As Range, AAr As Range) Dim D As Variant, T As Variant, DT() As Variant, R As Long, DCol As Integer, TCol As Integer Dim MaxTid As Variant, MinTid As Variant MinTid = #1/12/2050 11:59:00 PM# DCol = FirstDatoCell.Column SRow = FirstDatoCell.Row TCol = FirstTimeCell.Column R = Cells(65536, DCol).End(xlUp).Row D = Range(Cells(SRow, DCol), Cells(R, DCol)) T = Range(Cells(SRow, TCol), Cells(R, TCol)) ReDim DT(R) For i = 1 To (R + 1) - SRow DT(i) = D(i, 1) + T(i, 1) If Year(DT(i)) = AAr.Value Then If DT(i) < MinTid Then MinTid = DT(i) If DT(i) > MaxTid Then MaxTid = DT(i) End If Next FindTimer = MaxTid - MinTid End Function
kabbak Nu fremkommer der da et tal i cellen om end det ikke er rigtigt. Jeg har kigget lidt på din kode og kan ikke helt gennemskue den, men kan se der er noget med tid >11:59:00PM< i den. Måske jeg ikke har forklaret mig godt nok, men i dato cellerne (kol. A) står kun dato, eks.: 1. januar 2001. Og i "tids" cellerne (kol. B) står en maskines timetal på den givne dato, eks.: 5800. Altså som helt tal ikke noget med tt:mm eller andet.
Public Function FindTimer(FirstDatoCell As Range, FirstTimeCell As Range, AAr As Range) Dim D As Variant, T As Variant, R As Long, DCol As Integer, TCol As Integer Dim MaxTid As Variant, MinTid As Variant MinTid = #1/12/2050 11:59:00 PM# DCol = FirstDatoCell.Column SRow = FirstDatoCell.Row TCol = FirstTimeCell.Column R = Cells(65536, DCol).End(xlUp).Row D = Range(Cells(SRow, DCol), Cells(R, DCol)) T = Range(Cells(SRow, TCol), Cells(R, TCol)) For i = 1 To (R + 1) - SRow If Year(D(i, 1)) = AAr.Value Then If T(i, 1) < MinTid Then MinTid = T(i, 1) If T(i, 1) > MaxTid Then MaxTid = T(i, 1) End If Next FindTimer = MaxTid - MinTid End Function
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.