Uge Dag Dato Fra Til Timer Bemærkning 52 søndag 01-Jan-06 1 mandag 02-Jan-06 1 tirsdag 03-Jan-06 1 onsdag 04-Jan-06 1 torsdag 05-Jan-06
Jeg har et ark(Tider) med en række for hver dag, som ovenstående. I et andet ark(Udtræk) ønsker jeg, at kunne angive en fra og til dato. Kun de rækker der er imellem disse to datoer vises i arket Udtræk.
Public Function FilterData(Dataområde As Range, Datokolonne, Fradato, tildato) Dim Uddata(), A1 As Long, A2 As Long, A3 As Long, I As Long, C As Long, X As Long X = 0 A1 = Dataområde.Column A2 = Datokolonne.Column A3 = (A2 + 1) - A1 Col = Dataområde.Columns(Dataområde.Columns.Count).Column
Data = Dataområde ReDim Uddata(UBound(Data), Col - 1) For I = 1 To UBound(Data) If I = 1 Or (Data(I, A3) >= Fradato And Data(I, A3) <= tildato) Then For C = 0 To Col - 1 Uddata(X, C) = Data(I, C + 1) Next X = X + 1 End If Next For I = 1 To UBound(Uddata) For C = 0 To Col - 1 If Uddata(I, C) = 0 Then Uddata(I, C) = "" Next Next FilterData = Uddata End Function
I det ark hvor du skal have data over i, opretter du 2 celler hvor du skriver fradato og tildato i.
Nu markerer du så et område i dette ark der er lige så stor, som det områder du vil have data fra.
skriv så =FilterData(Ark1!A1:G20;Ark1!C1;I2;J2) tryk CTRL +SHIFT +ENTER
så får du {} omkring formlen
ret I2 til din datofra celle og J2 til din dato til celle, inden du trykker CTRL +SHIFT +ENTER
Jeg kan ikke lige få det til at spille. Nok fordi jeg ikke forstår det.
Funktionen har jeg smidt ind i Tools - Macro - VisualBasic Editor.
Jeg har to ark. Ark1 hedder Udtræk og Ark 2 hedder Tider. Datoafgrænsingen og filtreringen skal ske i arket Udtræk. Mens alle de rå data ligger i arket Tider. Jeg skriver fra og til dato i B1 og B2.
Jeg forstår så ikke resten af formlen =FilterData(Ark1!A1:G20;Ark1!C1;B1;B2) Hvad er Ark1!A1:G20? og Ark1!C1?
Har i Udtræk skrevet dato i B1 og B2, markeret fra A3 til G367 og trykket CTRL+SHIFT+ENTER. Der kom fint en {} rundt om formlen. Men en masse #NAME? i alle de markerede celler.
Min indtastede formel: =FilterData(Tider!A1:G366;Tider!C2;B1;B2) I Tiders række A står kolonneoverskrifterne. I C2 er den første dato af rådataerne. Og jeg har først indtastet datoer i B1 og B2.
Public Function FilterData(Dataområde As Range, Datokolonne, Fradato, tildato) Dim Uddata(), A1 As Long, A2 As Long, A3 As Long, I As Long, C As Long, X As Long X = 0 A1 = Dataområde.Column A2 = Datokolonne.Column A3 = (A2 + 1) - A1 Col = Dataområde.Columns(Dataområde.Columns.Count).Column
Data = Dataområde ReDim Uddata(UBound(Data), Col - 1) For I = 1 To UBound(Data) If I = 1 Or (Data(I, A3) >= Fradato And Data(I, A3) <= tildato) Then For C = 0 To Col - 1 Uddata(X, C) = Data(I, C + 1) Next X = X + 1 End If Next For I = 1 To UBound(Uddata) For C = 0 To Col - 1 If Uddata(I, C) = 0 Then Uddata(I, C) = "" Next Next FilterData = Uddata End Function
Jeg kan se at du kører med 1904 datosystem, det giver en fej i oversættelsen af datoen, den lægger simpelthen 4 år til når den finder resultatet.
den er nu lavet om så den tager højde for det.
Public Function FilterData(Dataområde As Range, Datokolonne, Fradato As Date, Tildato As Date) Dim Uddata(), A1 As Long, A2 As Long, A3 As Long, I As Long, C As Long, X As Long X = 0 A1 = Dataområde.Column A2 = Datokolonne.Column A3 = (A2 + 1) - A1 Col = Dataområde.Columns(Dataområde.Columns.Count).Column Data = Dataområde ReDim Uddata(UBound(Data), Col - 1) For I = 1 To UBound(Data) If I = 1 Or (Data(I, A3) >= Fradato - 1 And Data(I, A3) <= Tildato - 1) Then For C = 0 To Col - 1 Uddata(X, C) = Data(I, C + 1) Next If I > 1 Then Uddata(X, A3 - 1) = DateAdd("YYYY", -4, Uddata(X, A3 - 1)) ' linien herover fjernes hvis du IKKE kører med 1904 datosystem X = X + 1 End If Next For I = 0 To UBound(Uddata) For C = 0 To Col - 1 If Uddata(I, C) = 0 Then Uddata(I, C) = ""
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.