Avatar billede ogodt Nybegynder
29. juni 2011 - 12:51 Der 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.

Er der nogen der kan hjælpe.

\Ole
Avatar billede larsh03 Nybegynder
29. juni 2011 - 13:34 #1
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.
Avatar billede natkatten Mester
29. juni 2011 - 13:49 #2
Du kan også bruge LOPSLAG som i det uploadede eksempel. Det gælder også her, at der skal være unikke datoer i kolonne A:

http://gupl.dk/62163/
Avatar billede ogodt Nybegynder
29. juni 2011 - 13:58 #3
natkat :-)

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.

jeg håber i ved hvad jeg mener.
Avatar billede larsh03 Nybegynder
29. juni 2011 - 14:07 #4
Det er også muligt i pivottabellen...

Tryk på filterknappen over rækken af datoer
Vælg Datofiltre
vælg mellem
Indtast/vælg fra og til dato
Avatar billede ogodt Nybegynder
29. juni 2011 - 14:13 #5
Hej Lars,

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.

\Ole
Avatar billede natkatten Mester
29. juni 2011 - 14:23 #6
Noget i denne retning i dette hurtigt lavede eksempel:

http://gupl.dk/62165/

Har brugt INDEKS+SAMMENLIGN her.

Eksemplet bør forfines, men vil høre, om det er i denne retning jeres ønsker går.
Avatar billede ogodt Nybegynder
29. juni 2011 - 14:35 #7
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.
Avatar billede supertekst Ekspert
29. juni 2011 - 14:40 #8
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")
   
    a1.Activate
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    antalKol = ActiveCell.SpecialCells(xlLastCell).Column
     
    fraDato = A2.Range("C2")
    tilDato = A2.Range("E2")
   
    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
     
    A2.Activate
    A2.Range("C3").Select
    A2.Paste
    A2.Range("C3").Select
   
    Application.CutCopyMode = False
End Sub
Avatar billede natkatten Mester
29. juni 2011 - 14:41 #9
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.
Avatar billede natkatten Mester
29. juni 2011 - 14:42 #10
Supertekst havde lavet sit forslag, før jeg fik trykket send ;-)
Avatar billede mcb2001 Nybegynder
29. juni 2011 - 14:52 #11
konverter din dato til et tal (giver antal dagen siden "start") og brug =HVIS(OG(datofelt>datogrænsened; datofelt<datogrænseop) ...
Avatar billede ogodt Nybegynder
29. juni 2011 - 15:17 #12
SUPERtekst :-)

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.

TAK FOR HJÆLPEN
Avatar billede ogodt Nybegynder
29. juni 2011 - 15:17 #13
natkat - TAK for forslagene :-)
Avatar billede supertekst Ekspert
29. juni 2011 - 15:27 #14
Du får et svar - godt det ramte rigtigt.

Kan du ikke beskrive, hvor er der overskriftsrækker og hvor data begynder - så prøver jeg at lægge det ind i version2
Avatar billede ogodt Nybegynder
29. juni 2011 - 15:35 #15
Jeg har overskrifter i A1, B1 osv. Data begynder så i A2, B2 osv.
Avatar billede supertekst Ekspert
29. juni 2011 - 17:04 #16
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")
   
    a1.Activate
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    antalKol = ActiveCell.SpecialCells(xlLastCell).Column
     
    fraDato = A2.Range("C2")
    tilDato = A2.Range("E2")
   
Rem Overskrift
    a1.Range(a1.Cells(1, 1), a1.Cells(1, antalKol)).Select
    Selection.Copy
    A2.Activate
    A2.Range("C3").Select
    A2.Paste
    Application.CutCopyMode = False
   
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
     
    A2.Activate
    A2.Range("C4").Select
    A2.Paste
    A2.Range("C4").Select
   
    Application.CutCopyMode = False
End Sub
Avatar billede supertekst Ekspert
29. juni 2011 - 17:23 #17
Lidt kortere version
Rem Version 3
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
Dim r1 As Range, r2 As Range, r12 As Range

    Set a1 = ActiveWorkbook.Sheets("Ark1")
    Set A2 = ActiveWorkbook.Sheets("Ark2")
   
    a1.Activate
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
    antalKol = ActiveCell.SpecialCells(xlLastCell).Column
     
    fraDato = A2.Range("C2")
    tilDato = A2.Range("E2")
   
    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
               
                Selection.Copy
                Exit For
            End If
        End If
    Next
     
    A2.Activate
    A2.Range("C3").Select
    A2.Paste
    A2.Range("C3").Select
   
    Application.CutCopyMode = False
End Sub
Avatar billede ogodt Nybegynder
30. juni 2011 - 10:06 #18
Version 3 virker perfekt.

Kan man lave det så den tjekker dato og pris i et andet regneark og ikke på ARK1 ??

Mange tak for hjælpen indtil nu.
Avatar billede supertekst Ekspert
30. juni 2011 - 10:33 #19
Fint - er der tale om et ark i samme fil/mappe eller anden?
Avatar billede ogodt Nybegynder
30. juni 2011 - 10:37 #20
Der er tale om en anden fil i samme mappe.
Avatar billede supertekst Ekspert
30. juni 2011 - 10:43 #21
Det skulle ikke være noget problem. Du kan jo oprette et nyt spørgsmål - eller ??
Avatar billede ogodt Nybegynder
30. juni 2011 - 11:00 #22
Det gør jeg.
Avatar billede ogodt Nybegynder
30. juni 2011 - 11:26 #23
Spørgsmål oprettet i: http://www.eksperten.dk/spm/942085
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester