AW: Zeilen Eiinffügen ohne Markos einfach schnell
24.01.2013 13:55:13
Daniel
Hi
du wolltest doch auch ne Makrosfreie Lösung.
da gibts verschiedene Wege, wie man das auch bei beliebig grossen Datenmengen ohne Makro schnell und einfach erledigen kann
Variante 1: Leerzeilen einsortieren:
1. schreibe in einer Hilfsspalte in die erste Zeile eine 1 und in die 2. Zeile eine 2
2. makriere diese beiden Zellen und ziehe sie bis ans Datenende (ggf reicht ein Doppelklick auf die rechte unter Ecke des Markierungsrahmens) jetzt sollte die Zahlenfolge 1-n in der Spalte stehen.
3. kopiere jetzt die Zahlenfolge und füge sie in der gleichen Spalte am unteren Ende wieder an. Mach das so oft, wie du Leerzeilen zwischen den Datenzeilen haben willst.
4. sortiere die ganze Tabelle nach dieser erweiterten Hilfsspalte
5. lösche die Hilfsspalte wieder.
Variante 2: Per Formel:
1. füge in Spalte B folgende Formel ein:
=WENN(REST(ZEILE();3)=1;INDEX(A:A;AUFRUNDEN(ZEILE()/3;0));"")
2. kopiere die Formel 3x soweit wie du Datenzeilen hast
3. kopiere die Spalte mit den Formeln und füge sie an gleicher stelle als Wert ein
4. lösche die alte Spalte A
beide Varianten lassen sich auch per Makro ausführen sollen auch deutlich schneller sein als das Einfügen der Leerzeilen per Schleife, hier die Codebeispiel dazu:
Sub LeerEinfügen_Sort()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count).Offset(0, 1)
.Cells(1, 1).Value = 1
.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
.Copy .Cells(1, 1).End(xlDown).Offset(1, 0)
.Copy .Cells(1, 1).End(xlDown).Offset(1, 0)
End With
End With
With ActiveSheet.UsedRange
.Sort key1:=.Cells(1, .Columns.Count), order1:=xlAscending, Header:=xlNo
.Columns(.Columns.Count).ClearContents
End With
End Sub
Sub LeerEinfügen_Formel()
With ActiveSheet.UsedRange
With .Offset(, .Columns.Count).Resize(.Rows.Count * 3)
.Formula = "=IF(MOD(ROW(),3)=1,INDEX(A:A,ROUNDUP(ROW()/3,0)),"""")"
.Formula = .Value
End With
.EntireColumn.Delete
End With
End Sub
Gruß Daniel