Microsoft Excel

Herbers Excel/VBA-Archiv

Frage - Spalten einfügen & Spalten untereinander z

Betrifft: Frage - Spalten einfügen & Spalten untereinander z von: André
Geschrieben am: 08.08.2008 16:00:53

Hallo zusammen!

Ich habe da als blutiger Anfänger in VBA zwei Fragen:
1.) Wie kann ich in meiner Tabelle in jeder zweiten Spalte 4 leere Spalten einfügen lassen?
2.) Dann möchte ich unter den Inhalt der ersten fünf Spalten (A-E) den Inhalt der zweiten 5 Spalten (F-J) usw. In der grössten Tabelle muss das über 80mal wiederholt werden. Der Inhalt der Spaltengruppen (A-E, F-J etc) ist nicht immer gleich groß d.h. er unterscheidet sich in der Zeilenanzahl.

Wenn mir da jemand helfen könnte, und mir damit copy_paste erspart, wäre das echt prima!

Excel-Version: 2002 SP3

Vielen Dank im Voraus!!!

  

Betrifft: AW: Frage - Spalten einfügen & Spalten untereinander z von: Daniel
Geschrieben am: 08.08.2008 17:33:07

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


  

Betrifft: AW: Frage - Spalten einfügen & Spalten untereinand von: André
Geschrieben am: 08.08.2008 17:47:05

Hi Daniel,

alles klar!

Besten Dank für die Hilfe!

Gruß,
André


 

Beiträge aus den Excel-Beispielen zum Thema "Frage - Spalten einfügen & Spalten untereinander z"