Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1220to1224
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Monatswerte zusammenfassen | Herbers Excel-Forum

Monatswerte zusammenfassen
21.07.2011 18:14:11
marco hirschinger

Hallo Excel Freunde,
weis einer von euch wie ich in einer Liste alle zu einem Monat gehörenden Werte zusammenfassen kann?
Z.B. habe ich folgende Liste:
Nov 1 2008 12:00AM 74
Dez 1 2008 12:00AM 34
Jan 1 2009 12:00AM 8
Jan 1 2009 12:00AM 50
Feb 1 2009 12:00AM 10
Feb 1 2009 12:00AM 10
Feb 1 2009 12:00AM 10
Mrz 1 2009 12:00AM 24
Apr 1 2009 12:00AM 8
Apr 1 2009 12:00AM 20
Apr 1 2009 12:00AM 45
...
Und möchte hinterher:
Nov 1 2008 12:00AM 74
Dez 1 2008 12:00AM 34
Jan 1 2009 12:00AM 58
Feb 1 2009 12:00AM 30
Mrz 1 2009 12:00AM 24
Apr 1 2009 12:00AM 73
Mai 1 2009 12:00AM 4
...
hat jemand eine Idee? :)

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Probier mal Daten-Pivot-kwT
21.07.2011 18:22:31
robert
AW: Probier mal Daten-Pivot-kwT
25.07.2011 11:20:42
marco hirschinger
Hab ich schon versucht. Bisher leider erfolglos.
.,.dann schick mal deine Datei...
25.07.2011 12:01:29
robert
Hi,
was hast Du probiert?
Das ist ein Paradebeispiel für Pivot ;-)
Gruß
robert
AW: .,.dann schick mal deine Datei...
25.07.2011 12:40:07
marco hirschinger
Ok, hier mal ein Beispiel für einen Artikel. Die Monatswerte sollen wie gesagt zusammengefasst werden, so dass ich fortlaufende Zeitreihen von Januar bis Dezember erhalte.
https://www.herber.de/bbs/user/75857.xls
..woher und wie..
25.07.2011 13:20:54
robert
Hi,
kriegst Du die Daten ?
Speziell die Datumsspalte ist das Problem, die als Datum
umgewandelt werden müsste.....
Ansonsten wäre Pivot die Lösung.
Da fällt mir so schnell nichts ein, ich stelle die Frage
daher auf offen, vielleicht schaut noch wer rein :-)
Gruß
robert
Anzeige
AW: Monatswerte zusammenfassen
25.07.2011 16:41:11
Tino
Hallo,
hier ein Beispielcode
Sub Bsp()
Dim oDic As Object, ArrayDaten()
Dim n&
Set oDic = CreateObject("Scripting.Dictionary")

With Tabelle1 'Tabelle anpassen 
    ArrayDaten = .Range("B2", Cells(Rows.Count, 2).End(xlUp)).Resize(, 2)
    
    oDic("Datum") = "Summe" 'Überschrift 
    For n = 1 To Ubound(ArrayDaten)
        oDic(ArrayDaten(n, 1)) = oDic(ArrayDaten(n, 1)) + ArrayDaten(n, 2)
    Next n

    With .Range("E1").Resize(oDic.Count, 2) 'Ausgabe anpassen 
        .EntireColumn.Clear
        .Columns(1).Value = ArrayTranspose(oDic.keys)
        .Columns(2).Value = ArrayTranspose(oDic.items)
        .Rows(1).Font.Bold = True
        .EntireColumn.AutoFit
    End With
End With
End Sub

Function ArrayTranspose(varArray)
Dim n&, nn&, NewArray()
Redim NewArray(1 To Ubound(varArray) - Lbound(varArray) + 1, 1 To 1)
For n = Lbound(varArray) To Ubound(varArray)
    nn = nn + 1
    NewArray(nn, 1) = varArray(n)
Next n
ArrayTranspose = NewArray
End Function
Gruß Tino
Anzeige
@Tino-Teufelskerl-funkt.. ;-) kwT
25.07.2011 17:26:39
robert
..einen hab ich noch...
25.07.2011 18:01:40
robert
Ok, hier mal ein Beispiel für einen Artikel.
Hi Tino,
und wie wäre es bei mehreren Artikel ? siehe Marcos Beispiel
ich komm mit Dictionary und Array's einfach nicht zurecht :-(((
Gruß
robert
AW: ..einen hab ich noch...
25.07.2011 18:54:11
Tino
Hallo,
könnte man so machen, ohne Fehlerprüfung ob Daten vorhanden.
Option Explicit

Sub Bsp()
Dim oDic As Object, ArrayArtikel(), ArrayDaten()
Dim ArrayAusgabe(), varKeys
Dim n&, nn&, nC&

Set oDic = CreateObject("Scripting.Dictionary")

'Überschrift 
Redim Preserve ArrayAusgabe(1 To 3, 1 To 1)
nC = 1
ArrayAusgabe(1, nC) = "Artikel"
ArrayAusgabe(2, nC) = "Datum"
ArrayAusgabe(3, nC) = "Summe"
            
With Tabelle1 'Tabelle anpassen 
    ArrayDaten = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
    
    For n = 1 To Ubound(ArrayDaten)
        oDic(ArrayDaten(n, 1)) = 0
    Next n
    
    ArrayArtikel = oDic.keys
    ArrayDaten = .Range("A2", .Cells(.Rows.Count, 2).End(xlUp)).Resize(, 3)
        
        For nn = Lbound(ArrayArtikel) To Ubound(ArrayArtikel)
            oDic.RemoveAll
            For n = 1 To Ubound(ArrayDaten)
                If ArrayArtikel(nn) = ArrayDaten(n, 1) Then
                    oDic(ArrayDaten(n, 2)) = oDic(ArrayDaten(n, 2)) + ArrayDaten(n, 3)
                End If
            Next n
            
            Redim Preserve ArrayAusgabe(1 To 3, 1 To Ubound(ArrayAusgabe, 2) + oDic.Count)
            
            For Each varKeys In oDic.keys
                nC = nC + 1
                ArrayAusgabe(1, nC) = ArrayArtikel(nn)
                ArrayAusgabe(2, nC) = varKeys
                ArrayAusgabe(3, nC) = oDic(varKeys)
            Next varKeys

        Next nn
        
        ArrayAusgabe = ArrayTranspose(ArrayAusgabe)
        
        With .Range("E1").Resize(Ubound(ArrayAusgabe), 3) 'Ausgabe Überschrift 
            .EntireColumn.Clear
            .Value = ArrayAusgabe
            .Rows(1).Font.Bold = True
            .EntireColumn.AutoFit
        End With

End With 'Tabelle1 
End Sub

Function ArrayTranspose(varArray)
Dim n&, nn&, NewArray()
Redim NewArray(1 To Ubound(varArray, 2), 1 To Ubound(varArray))
For n = Lbound(varArray) To Ubound(varArray)
    For nn = Lbound(varArray, 2) To Ubound(varArray, 2)
        NewArray(nn, n) = varArray(n, nn)
    Next nn
Next n
ArrayTranspose = NewArray
End Function
Gruß Tino
Anzeige
naja, auch das ist Super ;-) kwT
25.07.2011 19:05:16
robert
kürzer und schneller...
25.07.2011 19:56:32
Tino
Hallo,
Sub Bsp()
Dim oDic(2) As Object, ArrayDaten()
Dim n&, strTemp$

Set oDic(0) = CreateObject("Scripting.Dictionary")
Set oDic(1) = CreateObject("Scripting.Dictionary")
Set oDic(2) = CreateObject("Scripting.Dictionary")

'Überschrift 
oDic(0)("Artikel") = "Artikel"
oDic(1)("Datum") = "Datum"
oDic(2)("Summe") = "Summe"
            
With Tabelle1 'Tabelle anpassen 
    ArrayDaten = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 3)
    
    For n = 1 To Ubound(ArrayDaten)
        strTemp = ArrayDaten(n, 1) & ArrayDaten(n, 2)
        oDic(0)(strTemp) = ArrayDaten(n, 1)
        oDic(1)(strTemp) = ArrayDaten(n, 2)
        oDic(2)(strTemp) = oDic(2)(strTemp) + ArrayDaten(n, 3)
    Next n
      
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        
            With .Range("E1").Resize(oDic(0).Count, 3) 'Ausgabe Überschrift 
                .EntireColumn.Clear
                .Columns(1) = ArrayTranspose(oDic(0).items)
                .Columns(2) = ArrayTranspose(oDic(1).items)
                .Columns(3) = ArrayTranspose(oDic(2).items)
                .Rows(1).Font.Bold = True
                .EntireColumn.AutoFit
            End With

        .ScreenUpdating = True
        .EnableEvents = True
    End With 'Application 
    
End With 'Tabelle1 
End Sub

Function ArrayTranspose(varArray)
Dim n&, nn&, NewArray()
Redim NewArray(1 To Ubound(varArray) - Lbound(varArray) + 1, 1 To 1)
For n = Lbound(varArray) To Ubound(varArray)
    nn = nn + 1
    NewArray(nn, 1) = varArray(n)
Next n
ArrayTranspose = NewArray
End Function
Gruß Tino
Anzeige
Super, jetzt muss sich Marco...
26.07.2011 07:11:31
robert
Hi Tino,
..noch melden :-)
Jetzt hat er die Qual der Wahl !
Danke und Gruß
robert
er wird sich nicht mehr melden oT.
26.07.2011 11:21:18
Tino
AW: er wird sich nicht mehr melden oT.
26.07.2011 12:29:58
marco hirschinger
Hi, vielen Dank. Ich melde mich schon noch. Eure Makros sind aber doch etwas zu hoch für mich. Mit dem einem Artikel hats ja geklappt. Wie bekomme ich jetzt die restlichen 12000 Zeilen umgewandelt?
womit hast Du denn Probleme?
26.07.2011 12:41:02
Tino
Hallo,
am besten ist es Du stellst ein Beispiel hier rein wie die Originaldatei bei Dir ist und
beschreibst wo die Daten hin sollen.
Gruß Tino

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige