Durschnittswert aus Liste Ermitteln mit verschiedenen Werten

  • Excel

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von d-j-h.

    Durschnittswert aus Liste Ermitteln mit verschiedenen Werten

    Hallo, hab eine Liste die unbekannt lang ist. Diese besteht aus 3 Spalten. Typ, Monat und Dauer.
    Nun soll für jedes Monat die Dauer der Typen zusammengefasst werden. Jedoch ändert sich die Typenbezeichnung und es kommen ständig neue dazu.
    Auch die Anzahl der gleichen Typen pro Monat ist jedes mal anders.
    Habe das bisherige Programm so geschrieben das alle Daten in einer Tabelle nach Monat Sortiert stehen.
    z.B.:
    TypMonatDauer
    A11
    B115
    A18
    B127

    Habt ihr hier einen Lösungsansatz?
    Danke für den Hinweis, habe mich gerade in das Thema eingelesen und das sieht auch ideal aus.
    Wie ich eine Pivot Tabelle per Hand erstelle bei einer bereits vorhanden Tabelle ist mir jetzt klar. Nur wie mache ich das aus dem Programm heraus?
    Habe zwar bereits Code Anweisungen gefunden. Aber mir erschließt sich der Weg nicht ganz wie man die Pivottabelle richtig modifizieren kann
    vielen dank. eure Hilfe hat mich auf den richtigen weg gebracht =)
    jetzt hat alles funktioniert, nun habe ich jedoch das Problem dass ich mehrere Diagramme erstellen möchten. Anfangs habe ich dazu meine alte Pivottabelle gelöscht und eine neue erstellt um aus dieser wieder ein Diagramm zu bilden. Diesen Weg wollte ich aber jetzt nicht mehr gehen und habe versucht mehrere Pivottabellen zu generieren. das Problem ist aber das ich die Quelle für die Tabelle nicht flexibel gestalten kann.
    Wie schreibe ich diesen Code so um das er ab der Zweiten Tabelle die Quelle um 6 Spalten weiter rechts, bei der 3. um 12 etc versetzt ausliest?

    Quellcode

    1. Set ptChache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="C1:E" & ActiveSheet.UsedRange.Rows.Count)

    Eine Abfrage über Cells würde mir hier logisch erscheinen, weiß aber nicht wie ich das einbaue

    Visual Basic-Quellcode

    1. n=3 '3.Tabelle
    2. c=3+6*n 'Spaltenbeginn
    3. Set ptChache = ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Intersect(Tabelle1.UsedRange, Range(Tabelle1.Columns(c), Tabelle1.Columns(c+2)))


    Und bitte verwende nicht die Active...-Objekte sondern adressiere Workbook und Worksheet direkt!
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Jetzt habe ich doch noch ein kleines Problem, bzw ich möchte dazulernen.

    Meine Tabelle soll in zwei Spalten den Mittelwert von der Sollzeit und Bearbeitungszeit anzeigen können.

    folgenden Code habe ich geschrieben (Teils aufgezeichnet):

    Quellcode

    1. With ptTable
    2. .PivotFields("Jahr").Orientation = xlRowField
    3. .PivotFields("Monat").Orientation = xlRowField
    4. .PivotFields("Maschinentyp").Orientation = xlRowField
    5. .PivotFields("Bearbeitungszeit in h").Orientation = xlDataField
    6. End With
    7. With ThisWorkbook.PivotTables("Test1").PivotFields( _
    8. "Summe von Bearbeitungszeit in h")
    9. .Caption = "Mittelwert von Bearbeitungszeit in h"
    10. .Function = xlAverage
    11. .NumberFormat = "0.00"
    12. End With
    13. ThisWorkbook.PivotTables("Test1").AddDataField ThisWorkbook.PivotTables("Test1"). _
    14. PivotFields("Sollzeit"), "Anzahl von Sollzeit", xlCount
    15. With ThisWorkbook.PivotTables("Test1").DataPivotField
    16. .Orientation = xlColumnField
    17. .Position = 1
    18. End With
    19. With ThisWorkbook.PivotTables("Test1").PivotFields( _
    20. "Anzahl von Sollzeit")
    21. .Caption = "Mittelwert von Sollzeit"
    22. .Function = xlAverage
    23. .NumberFormat = "0.00"
    24. End With


    Ich vermute das das erstellen der Spalten viel einfacher und kürzer geht. Was sagt ihr dazu?
    Da wirst du nicht viel optimieren können.
    Ich hätte es zwecks Übersicht anders gestaltet, aber das ist reine Geschmacksache.

    Visual Basic-Quellcode

    1. ​With ThisWorkbook.PivotTables("Test1")
    2. .PivotFields("Jahr").Orientation = xlRowField
    3. .PivotFields("Monat").Orientation = xlRowField
    4. .PivotFields("Maschinentyp").Orientation = xlRowField
    5. .PivotFields("Bearbeitungszeit in h").Orientation = xlDataField
    6. .PivotFields("Summe von Bearbeitungszeit in h").Caption = "Mittelwert von Bearbeitungszeit in h"
    7. .PivotFields("Summe von Bearbeitungszeit in h").Function = xlAverage
    8. .PivotFields("Summe von Bearbeitungszeit in h").NumberFormat = "0.00"
    9. .AddDataField .PivotFields("Sollzeit"), "Anzahl von Sollzeit", xlCount
    10. .PivotFields("Anzahl von Sollzeit").Caption = "Mittelwert von Sollzeit"
    11. .PivotFields("Anzahl von Sollzeit").Function = xlAverage
    12. .PivotFields("Anzahl von Sollzeit").NumberFormat = "0.00"
    13. End With
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --