29. juni 2011 - 12:51Der er
22 kommentarer og 1 løsning
Finde og returnere data mellem 2 dato'er
Hej alle,
jeg har nu søgt nettet tykt og tyndt for og finde denne løsning - jeg håber i kan hjælpe.
Vi har et regne ark med f.eks.: ARK1 Dato pris 01-01-2011 12,25 01-02-2011 14,25 01-03-2011 14,25 01-04-2011 15,25
på ARK2 skulle vi så gerne kunne indtaste 2 datoer - f.eks. i C2 datoen 01-01-2011 og i E2 datoen 01-03-2011. så skulle den gerne returnere dato og de 3 priser (i det her tilfælde) i A1-B3.
Løsningen må gerne kunne udvides så hvis man har en pris, pris1, pris2 osv. også returnerer disse.
Ved ikke om det er det du leder efter men du burde kunne bruge Pivottabel...
Indsæt Pivottabel på Ark2 Tabel område = Ark1 A1 -> B5 (C-D-E5 hvis flere priser i flere kolonner) Alle felter tilføjes tabellen Herefter kan du anvende standard dato afgrænsning i Pivottabellen
det skal dog nævnes at pivottabel ikke vil virke hvis du har flere af samme data i kolonne A fx. 01-01-2011 to gange.
dit LOPSLAG har lidt af det, men vi skal have muligheden for kun og trække de dato'er over som vi har brug for, f.eks hvis vi kun ville have data fra 01-01-2011 til 16-01-2011 og IKKE før eller senere end det. Dato'erne (månederne er det faktisk) vil altid være lige efter hinanden.
det er rigtigt, men de data vi trækker ud skal bruges i et søjlediagram (gerne fuldautomatisk) og regnearket skal bruges af flere som ikke har et klap forstand på excel, derfor skal det være nemt for dem.
både og, det jeg havde håbet på var, at der i f.eks. ARK2 på C2 var en rulleliste med månederne (som start dato) og D2 en rulleliste med måneder (som slutdato) og hvis de bare vælger de 2 dato'er bliver alt udfyldt, også de måneder mellem start og slut dato.
alternativ VBA-kode - kan udvides med rulleListe - evt. i userform (programmeret dialogboks, der kan vises når arket arktiveres)
Rem VBA-koden er "under ark2" (Højreklik / Vis programkode) Rem Koden iværksættes m/Alt+F8 / intervalDatoPriser / Afspil makro eller opret Knap på Ark2 Public Sub intervalDatoPriser() Dim a1 As Worksheet, antalRæk As Long, antalKol, ræk As Long, kol As Long Dim A2 As Worksheet Dim fraDato As Date, tilDato As Date, fraRæk As Long, tilRæk As Long
Set a1 = ActiveWorkbook.Sheets("Ark1") Set A2 = ActiveWorkbook.Sheets("Ark2")
Rullelisterne med start- og slutmåneder er lette at lave. Men hvis der skal sættes rækker ind mellem disse med de mellemliggende månedes priser, f.eks. når januar vælges som startmåned og juli som slutmåned, så tror jeg umiddelbart, at der skal kodes en VBA-løsning. Og her er jeg ikke så skrap som andre her i dette forum.
Jeg skal ikke udelukke, at det kan laves uden VBA, men lige nu afstår jeg fra at tænke videre over dit spørgsmål.
den sidder lige i skabet og det tyder på man bare kan udvide den som ønsket, hvis man nu gerne vil have overskriften med over, kan det lade sig gøre, det er fordi der vil være forskellige varetyper og det skal kunne ses i diagrammet.
Hvis du smider et svar får du nogle velfortjente point.
Rem VBA-koden er "under ark2" (Højreklik / Vis programkode) Rem Koden iværksættes m/Alt+F8 / intervalDatoPriser / Afspil makro eller opret Knap på Ark2 Rem VERSION 2 Rem =========
Public Sub intervalDatoPriser() Dim a1 As Worksheet, antalRæk As Long, antalKol, ræk As Long, kol As Long Dim A2 As Worksheet Dim fraDato As Date, tilDato As Date, fraRæk As Long, tilRæk As Long
Set a1 = ActiveWorkbook.Sheets("Ark1") Set A2 = ActiveWorkbook.Sheets("Ark2")
Rem Data a1.Activate For ræk = 2 To antalRæk If a1.Range("A" & ræk) = fraDato Then fraRæk = ræk Else If a1.Range("A" & ræk) = tilDato Then tilRæk = ræk a1.Range(a1.Cells(fraRæk, 1), a1.Cells(tilRæk, antalKol)).Select Selection.Copy Exit For End If End If Next
Public Sub intervalDatoPriser() Dim a1 As Worksheet, antalRæk As Long, antalKol, ræk As Long, kol As Long Dim A2 As Worksheet Dim fraDato As Date, tilDato As Date, fraRæk As Long, tilRæk As Long Dim r1 As Range, r2 As Range, r12 As Range
Set a1 = ActiveWorkbook.Sheets("Ark1") Set A2 = ActiveWorkbook.Sheets("Ark2")
For ræk = 2 To antalRæk If a1.Range("A" & ræk) = fraDato Then fraRæk = ræk Else If a1.Range("A" & ræk) = tilDato Then tilRæk = ræk Rem Overskrift Set r1 = a1.Range(a1.Cells(1, 1), a1.Cells(1, antalKol)) Set r2 = a1.Range(a1.Cells(fraRæk, 1), a1.Cells(tilRæk, antalKol)) Rem Data Set r12 = Application.Union(r1, r2) r12.Select
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.