AW: Aufheben einer Spalte mit 35040 Zeilen
22.10.2007 10:22:00
Chaos
Servus Thomas,
Sub Unterteilung()
Application.ScreenUpdating = False
Dim letzteE As Long
letzteE = Range("E65536").End(xlUp).Row
Range("E1:BS" & letzteE).ClearContents ' Löschen vorhandener Einträge
Dim letzteA As Long
If Range("A65536") "" Then
letzteA = 65536
Else
letzteA = Range("A65536").End(xlUp).Row ' letzte in A ermitteln
End If
Dim zeile As Long
Dim zähler As Double
zähler = 0
For zeile = 1 To 35040 Step 672 ' Wochen schreiben
Range(Cells(zeile, 3), Cells(zeile + 671, 3)).Copy Cells(2, 5 + zähler)
zähler = zähler + 1
Next zeile
Dim spalte As Long
Dim zähler1 As Double
zähler1 = 0
For spalte = 5 To 56 Step 4 ' Monate schreiben
Range(Cells(2, spalte), Cells(673, spalte)).Copy Cells(2, 58 + zähler1)
Range(Cells(2, spalte + 1), Cells(673, spalte + 1)).Copy Cells(65536, 58 + zähler1).End(xlUp). _
Offset(1, 0)
Range(Cells(2, spalte + 2), Cells(673, spalte + 2)).Copy Cells(65536, 58 + zähler1).End(xlUp). _
Offset(1, 0)
Range(Cells(2, spalte + 3), Cells(673, spalte + 3)).Copy Cells(65536, 58 + zähler1).End(xlUp). _
Offset(1, 0)
zähler1 = zähler1 + 1
Next spalte
Dim letzteSpalteZeile As Long
letzteSpalteZeile = Range("BE65536").End(xlUp).Row
Range("BE2:BE" & letzteSpalteZeile).Copy Range("BS2") ' letzte spalte = nicht komplette Woche _
als Moant kopieren
Dim spalteWoche As Long
For spalteWoche = 5 To 57
Cells(1, spalteWoche) = "KW " & spalteWoche - 4 ' Überschriften Woche
Next spalteWoche
Dim spalteMonat As Long
For spalteMonat = 58 To 71
Cells(1, spalteMonat) = "Monat " & spalteMonat - 57 ' Überschriften Monat
Next spalteMonat
Application.ScreenUpdating = True
End Sub
et voila.
Die Wochen und Monate werden nach rechts nebeneinander geschrieben, erst Wochen, dann Monate (immer alle Werte aus spalte C) und ancshließend mit den passenden Überschriften versehen.
Du kannst das makro öfters ausführen, da vor Schreiben der Monate, der gefüllte Bereich der KW und Monate zuerst geöscht wird.
Gruß
Chaos