AW: Frage - Spalten einfügen & Spalten untereinander z
08.08.2008 17:33:07
Daniel
Hi
das untereinanderkopieren kannst du mit folgendem Kode lösen:
Sub Spalten_Kopieren()
Dim sp As Long
For sp = 6 To ActiveSheet.UsedRange.Columns.Count Step 5
Cells(1, sp).Resize(Cells(Rows.Count, sp).End(xlUp).Row, 5).Copy
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
Next
Application.CutCopyMode = xlCopy
End Sub
bzw 80 mal kannst du das nicht hintereinander ausführen, denn dann müsste deine Datei über 400 Spalten haben, maximal möglich sind aber nur 256
Jetzt zum einfügen der Leerspalten, wenn du nach der 2. Spalte 4 Leerspalten einfügen willst, dann geht das so:
Columns(3).resize(,4).insert
bei einer grösseren Tabelle ist aber folgendes vorgehen sinnvoller, weil schneller:
Sub Spalten_Einfügen()
Dim sp As Long
Dim ze As Long
Dim anz As Long
With ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell)
sp = .Column
ze = .Row + 1
End With
Cells(ze, 1).Resize(, sp).FormulaLocal = "=Spalte()"
Cells(ze, sp + 1).Value = 2.1
Cells(ze, sp + 2).Resize(, 3).FormulaR1C1 = "=RC[-1]+.1"
Cells(ze, sp + 5).FormulaR1C1 = "=RC[-4]+2"
Cells(ze, sp + 6).Resize(, 3).FormulaR1C1 = "=RC[-1]+.1"
anz = (sp / 2 - 2) * 4
Cells(ze, sp + 5).Resize(, 4).Copy Destination:=Cells(ze, sp + 9).Resize(, anz)
Rows(ze).Value = Rows(ze).Value
Cells(1, 1).CurrentRegion.Sort key1:=Cells(ze, 1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlSortRows
Rows(ze).Delete
Range("A1:B1").Sort key1:=Range("A1"), Orientation:=xlSortColumns
End Sub
die Leerspalten werden durch sortieren eingefügt, um das Prinzip zu verstehen, gehst du am besten das Makro im Einzelstepmodus durch und schaust dir an, was passiert.
das letzte Sortieren verändert nichts sondern stellt nur die Sortiereinstellung wieder auf normales Zeilensortiern zurück
Gruß, Daniel