Clever-Excel-Forum

Normale Version: Werte eines bestimmten Zeitraums errechnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen zusammen,

ich hatte im April 2021 schon mal ein Thema erstellt. Hierzu bekam ich eine Hilfe über Power Query, wobei ich sagen muss dass ich mich mit den Befehlsarten etwas schwer tue. Bei meiner Excel-Aufstellung handelt es sich um eine Jahresauswertung mit 2015 Datensätzen.

Spalte A (Startdatum)
Spalte B (Enddatum)
Spalte C (Wert)

Das Start- bzw. Enddatum haben pro Datensatz immer unterschiedliche Werte und somit unterschiedliche Anzahl an Zeiträumen (Tagen) zwischen Start- und Enddatum. Der Wert (Spalte C) muss dann in dem Zeitraum von Start- bis Enddatum mit eingerechnet werden.

Am Ende möchte ich eine Auswertung für das ganze Jahr erstellen könne, wo ich sehen kann an welchem Tag dieses Zeitraums ich den höchsten Wert vorweisen kann.

Vielen Dank im Voraus für eure Antworten und die Hilfe.
Hallo

meinst du das so?

ABCDEFGHI
1StartdatumEnddatumWertMaxStartEnde
229.10.202105.01.20225.857,94 €122.871,79 €10.10.202221.10.2022
301.11.202105.01.20223.369,45 €
401.11.202101.12.20213.927,73 €
501.11.202101.12.20213.788,33 €
601.11.202101.12.202133.409,02 €
701.11.202102.12.20213.788,33 €
801.11.202102.11.20217.700,00 €
901.11.202102.12.20211.016,04 €

ZelleFormel
G2=MAX(C:C)
H2=INDEX(A:A;VERGLEICH($G2;$C:$C;0))
I2=INDEX(B:B;VERGLEICH($G2;$C:$C;0))

Oder so?

ABCDEFGHIJKLM
1StartdatumEnddatumWertEingabe Betrachtungszeitraum:Ergebnis:
229.10.202105.01.20225.857,94 €VonBisMaxStartEnde
301.11.202105.01.20223.369,45 €01.11.202110.11.2022122.871,79 €10.10.202221.10.2022
401.11.202101.12.20213.927,73 €
501.11.202101.12.20213.788,33 €
601.11.202101.12.202133.409,02 €

ZelleFormel
K3=MAXWENNS($C:$C;$A:$A;">="&G3;$B:$B;"<="&H3)
L3=INDEX(A:A;VERGLEICH($K3;$C:$C;0))
M3=INDEX(B:B;VERGLEICH($K3;$C:$C;0))
Oder so ?
Hallo,

danke für die schnelle Rückantwort. Nein, ich meine es etwas anders. An jedem Tag zwischen Startdatum und Enddatum muss ich den Wert aus Spalte C pro Datensatz voll mit einrechnen. Jetzt möchte ich wissen, an welchem Tag X innerhalb dieses Jahres ich den höchsten Wert rausbekomme.

Ich hab nochmal eine andere Datei mit weniger Datensätzen zur Veranschaulichung mitgeschickt.
Hi,

z.B. so, in B14, nach unten ziehen:

Code:
=SUMME($C$2:INDEX($C$2:$C$11;VERGLEICH(A14;$A$2:$A$11;1)))-SUMMEWENN($B$2:$B$11;"<"&A14;$C$2:$C$11)

anhand Deiner Originaltabelle sieht das Ganze allerdings ganz anders aus:

[attachment=46234]
Hallo

per VBA in ein normales Modul

Code:
Sub Zusammenfassung()
    Dim TB1 As Worksheet, TB2 As Worksheet, LR1 As Long, i As Long, LR2 As Long
    Dim Datum As Date, MMax As Double, Zeile As Long, Am As String
    Dim FirstAddr As String, C As Range
   
    Set TB1 = Sheets("Tabelle1")
    Set TB2 = Sheets("Tabelle2")
   
    'Reset
    With TB2
        .UsedRange.ClearContents
        .Cells(1, 1) = "Datum"
        .Cells(1, 2) = "Summe"
        .Cells(1, 5) = "Max"
        .Cells(1, 6) = "An den Tagen"
    End With
   
    With TB1
        LR1 = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
       
        For i = 2 To LR1
            For Datum = .Cells(i, 1) To .Cells(i, 2)
                ' erste freie Zeile
                LR2 = TB2.Cells(TB2.Rows.Count, "A").End(xlUp).Row + 1
               
               
                'Ist Datum schon vorhanden
                If WorksheetFunction.CountIf(TB2.Columns(1), Datum) = 0 Then
                   
                    'noch nicht vorhanden, also anlegen
                    TB2.Cells(LR2, 1) = Datum
                    TB2.Cells(LR2, 2) = .Cells(i, 3)
                Else
                    'bereits da in Zeile
                    Zeile = WorksheetFunction.Match(CDbl(Datum), TB2.Columns(1), 0)
                    TB2.Cells(Zeile, 2) = TB2.Cells(Zeile, 2) + .Cells(i, 3)
                   
                End If
            Next
        Next
    End With
    With TB2
        MMax = Application.Max(.Columns(2))
        .Cells(2, 5) = MMax
      
       
        'Tage zusammensetzen
        Set C = .Columns(2).Find(MMax, LookIn:=xlFormulas)
        If Not C Is Nothing Then
            FirstAddr = C.Address
            Do
                Am = Am & .Cells(C.Row, 1) & " / "
                Set C = .Columns(2).FindNext(C)
            Loop While Not C Is Nothing And C.Address <> FirstAddr
        End If
       
        'Letzte / weg und in Zelle schreiben
        .Cells(2, 6) = Left(Am, Len(Am) - 3)
       
    End With
End Sub

Ergibt dann:

ABCDEF
1DatumSummeMaxAn den Tagen
201.01.202010.000,00 €60.000,00 €05.01.2020 / 06.01.2020 / 07.01.2020 / 08.01.2020
302.01.202010.000,00 €
403.01.202020.000,00 €
504.01.202040.000,00 €
605.01.202060.000,00 €
706.01.202060.000,00 €
807.01.202060.000,00 €
908.01.202060.000,00 €
1009.01.202040.000,00 €
1110.01.202040.000,00 €
1211.01.202010.000,00 €
1312.01.202010.000,00 €


LG UweD
Mit Powerquery und Powerpivot kommt man ohne VBA auf folgendes Ergebnis
[attachment=46235]
Hallo,

danke für die Antwort. Wäre es möglich die Excel Datei, die ohne VBA sondern mit PowerQuery bzw. PowerPivot erstellt wurde, einmal zu bekommen?

Vielen Dank.
Hab es hinbekommen. Danke nochmal an alle die mir geantwortet und geholfen haben.