Anzeige
Archiv - Navigation
1468to1472
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

Sortieren und Addieren von drei Spalten

Sortieren und Addieren von drei Spalten
25.01.2016 07:28:30
drei
Hallo,
ich habe folgendes Problem.
Ich habe ein Excelsheet in dem Spalte A(1) mit einem Projektnamen, Spalte B(2) mit der Ausprägung des Projektes und in Spalte C(3) die verwendete Zeit auf das Projekt und die entsprechende Ausprägung.
Als Kurzes Beispiel:
Projekt 1 | Ausprägung 1| 3h
Projekt 2 | Ausprägung 2| 3h
Projekt 1 | Ausprägung 3| 3h
Projekt 3 | Ausprägung 3| 3h
Projekt 2 | Ausprägung 1| 3h
Projekt 3 | Ausprägung 1| 3h
Projekt 2 | Ausprägung 2| 3h
Projekt 1 | Ausprägung 2| 3h
Mein Ziel ist es, die Projekte alphabetisch zu ordnen. Dabei sollen ihre Ausprägungen und Zeiten natürlich mitgenommen werden. Wenn das geschafft ist, möchte ich, dass die Ausprägungen innerhalb eines Projektes alphabetisch sortiert werden und bei gleichem Projekt und gleicher Ausprägung die Zeiten addiert werden, sodass jedes Projekt maximal einmal mit jeder Ausprägung zufinden ist.
Leider kann es auch vorkommen, dass Spalte 1 und 3 leer sind, sodass nur Spalte 2 einen inhalte besitzt. Diese "Ausreißer" sollten unten an die sortierte Tabelle angehängt werden, auch sortiert bzw. addiert, wenn sie mehrfach vorhanden sind.
Das Ergebnis der Auflistung sollte am ende wie folgt aussehen:
Projekt 1 | Ausprägung 1| 3h
Projekt 1 | Ausprägung 2| 3h
Projekt 1 | Ausprägung 3| 3h
Projekt 2 | Ausprägung 1| 3h
Projekt 2 | Ausprägung 2| 6h
Projekt 3 | Ausprägung 1| 3h
Projekt 3 | Ausprägung 3| 3h
Ich habe bis jetzt versucht das Problem mit For und If schleifen zu lösen. Dies scheint aber die falsche Herangehensweise zu sein. Das mit dem Sortieren und Addieren bekomme ich aber leider nicht so einfach hin, wie ich es mir wünsche.
Für Hilfe wäre ich dankbar.
Gruß,
Erik

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit PIVOTauswertung ...
25.01.2016 08:00:22
...
Hallo Erik,
... kannst Du das schnell und einfach mit wenigen Mausklicks erzielen.
Dazu musst Du nur den Spalten Überschriften vergeben, die Zeiten als benutzerdefinierte formatierte Zahlenwerte haben und eine Berichtslayout im Tabellenformat ohne Teilergebnisse zuweisen, wo Du "Projekt" und "Ausprägung" in den Pivotbereich "Zeilenbeschriftung" und "Zeit" in den Bereich "Werte" zuordnest.
Danach sieht es so aus:
 ABCDEFG
1ProjektAusprägungZeit ProjektAusprägungSumme von Zeit
2Projekt 1 Ausprägung 13 h Projekt 1 Ausprägung 13 h
3Projekt 2 Ausprägung 23 h   Ausprägung 23 h
4Projekt 1 Ausprägung 33 h   Ausprägung 33 h
5Projekt 3 Ausprägung 33 h Projekt 2 Ausprägung 13 h
6Projekt 2 Ausprägung 13 h   Ausprägung 26 h
7Projekt 3 Ausprägung 13 h Projekt 3 Ausprägung 13 h
8  Ausprägung 34 h   Ausprägung 33 h
9  Ausprägung 2  (Leer) Ausprägung 2 
10  Ausprägung 35 h   Ausprägung 39 h
11Projekt 2 Ausprägung 23 h Gesamtergebnis 33 h
12Projekt 1 Ausprägung 23 h    
13       


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
AW: mit PIVOTauswertung ...
25.01.2016 08:29:13
Erik
Danke für die schnelle Antwort. Ich hatte ehrlich gesagt gehofft, dies ueber einen vba code lösen zu können, da ich die daten in verschiedenster Art und Weise weiterverarbeiten will/muss. Da im laufe der Zeit Zeilen dazukommen können, würden sich mit einer Pivotauswertung ja auch die Zellen verschieben, wodurch der Nutzen nicht mehr gegeben wäre.
Weitere Vorschläge?
Grüße,
Erik

AW: mit PIVOTauswertung ...
25.01.2016 11:05:44
Erik
ich habe es jetzt erstmal geschafft die Zeilen entsprechend meiner Kriterien zu sortieren
Worksheets("Auswertung").Range("A3:C165").Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:=Range("B3"), Order2:=xlAscending, Orientation:=xlTopToBottom
Jetzt bleibt die Fragen, wie ich bei Zeilen, in denen Spalte 1 und Spalte 2 gleich sind, die dritte Spalte zusammenaddiere
Gruß Erik

Anzeige
AW: Sortieren und Addieren von drei Spalten
25.01.2016 17:11:43
drei
Hallo Erik,
als reine VBA-Lösung vielleicht so: Option Explicit Public Sub Zusammenfassen() Dim MyDict As Object ' As Dictionary Dim vTemp As Variant ' ein temporärer Array Dim lTemp As Long ' der For/Next Schleifen Index zum Array Dim sText As String Dim lLetzte As Long ' die letzte belegte Zeile in Spalte E Dim lZeile As Long ' der For/Next Schleifen-Index - hier die Zeile Set MyDict = CreateObject("Scripting.Dictionary") ' die Eingabe-Daten aus Performance-Gründen in ein Array kopieren With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen! vTemp = .Range("A1:C" & .Cells(.Rows.Count, 1).End(xlUp).Row) ' ggf. anpassen! End With ' zusammenfassen der Begriffe und addieren der Werte For lTemp = 1 To UBound(vTemp) sText = vTemp(lTemp, 1) & "##" & vTemp(lTemp, 2) MyDict(sText) = MyDict(sText) + Val(vTemp(lTemp, 3)) Next lTemp Application.ScreenUpdating = False ' kein Bildschirm-Update mehr zulassen ' Ausgeben. Die Zielzellen müssen ggf. angepasst werden With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen! lLetzte = .Cells(.Rows.Count, 5).End(xlUp).Row ' die im Dictionary gesammelten und addierten Werte ausgeben .Range("E1").Resize(MyDict.Count) = WorksheetFunction.Transpose(MyDict.keys) .Range("G1").Resize(MyDict.Count) = WorksheetFunction.Transpose(MyDict.Items) For lZeile = 1 To MyDict.Count vTemp = Split(.Range("E" & lZeile).Value, "##") .Range("E" & lZeile).ClearContents .Range("E" & lZeile).Value = vTemp(0) .Range("F" & lZeile).Value = vTemp(1) .Range("G" & lZeile).Value = .Range("G" & lZeile).Value & " h" Next lZeile ' ab Zeile 1 bis zur letzten belegten Zeile alles einschl. E-G aufsteigend sortieren .Range("E1:G" & lLetzte).Sort _ Key1:=.Range("E1"), Order1:=xlAscending, _ Key2:=.Range("F1"), Order2:=xlAscending, _ Header:=xlNo, OrderCustom:=1, _ MatchCase:=True, Orientation:=xlTopToBottom .Columns("E:G").EntireColumn.AutoFit End With Set MyDict = Nothing Application.ScreenUpdating = True ' das Bildschirm-Update wieder zulassen End Sub
Gruß Peter
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige