Supportnet / Forum / Tabellenkalkulation
Sortierfunktion als Makro
Frage
Hi Leute!
Ich versuche gerade eine Liste zusammen zufassen und würde das gerne mit nem Makro machen. Allerdings fehlt mir das wissen für die richtige Eintritts und Austrittsbedingung. Vielleicht könnt Ihr ja helfen?
Ich möchte 132 Zeilen mit jeweils vier Spalten (M bis P) zusammenfassen und eventuell auch sortieren (das ist allerdings Nebensache!).
In den 132 Zeilen treten Projektnummern (Spalte M) und die darauf verwendeten Stunden (Spalte P) auf. Die Zeilen können gleiche und unterschiedliche Projektnummern haben. Außerdem können gleiche Projekte verschiedene Schlüsselnummern und Zusatznummern (Spalte N und O) besitzen. Nicht alle Zeilen sind gefüllt!!! Manchmal kommen also Leerzeilen vor.
In dem Feld M159 bis P193 möchte ich die Projekte mit aufaddierter Zeit nun nach Projekten sortiert zusammenfassen.
Ich muss also die erste Zeile (M12 bis P12) in die Zeile M158 bis P158 schreiben. Er soll nun die nächste Zeile (M13 bis P13) mit den schon geschriebenen (ab Zeile M158) vergleichen. Ist die Projektnummer identisch addiert er die Zeit (Spalte P) auf und schreibt das neue Ergebnis in Feld P158.
Unterscheiden sich die Projektnummern schreibt er die Felder in die Zeile M159 bis P159.
Dann beginnt der Vergleich mit der nächsten Zeile(M13 bis 13). Diesmal muss mit zwei schon geschriebenen Zeilen (M159bis P158 und M159 bis P159) verglichen werden usw.
Ich bin jetzt mit dem Makro soweit, dass er zu dem entsprechenden Feld geht und deren Inhalt in das Zielfeld schreibt. Allerdings fehlt mir halt die Abfrage...
Vielleicht könnt ihr ein bisschen helfen?
[code]
Option Explicit
Sub Projekte()
Dim Projektnr As Integer
Dim U_nummer As Integer
Dim Taetigkeit As Integer
Dim Spalte As Integer, Row As Integer, i As Integer, m As Integer
Dim Startspalte As Integer, Startzeile As Integer
Dim Stunden As String
Rem: Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
Rem: Bereich M158:P193 für neue Anzeige löschen
Range("M158:P193").ClearContents
Row = 158
Spalte = 13
Startzeile = 12
Startspalte = 13
Rem: Schleife für Abfrage der Zeilen beginnt
For i = 1 To 132
Rem: Schleife für die Projektzuweisung (4 Spalten) beginnt
For m = 1 To 4
Cells(Row, Spalte) = Cells(Startzeile, Startspalte)
Spalte = Spalte + 1
Startspalte = Startspalte + 1
Next m
Row = Row + 1
Startzeile = Startzeile + 1
Spalte = 13
Startspalte = 13
Next i
End Sub
[/code]

