Microsoft Excel

Herbers Excel/VBA-Archiv

Individuelle Reihen

Betrifft: Individuelle Reihen von: Klein
Geschrieben am: 22.07.2020 11:41:52

Hallo Zusammen,


ich habe folgendes Problem.


ich habe eine Excel Datei mit bis zu 10.000 Zeilen.

Jetzt würde ich gerne eine Zeile markieren (beinhaltet eine Formel) und in die übernächste Zeile einfügen.

Und diese Schleife bis zu 10.000 sten Zeile.

Schleife sollte so aussehen:

Sub Makro2()
'
' Makro2 Makro
'

'

    Rows("4:4").Select
    Selection.Copy
    Rows("6:6").Select
    ActiveSheet.Paste
     Rows("6:6").Select
    Selection.Copy
    Rows("8:8").Select
    ActiveSheet.Paste
         
End Sub


Kann mir da jemand diesen Vorgang bis zur 10.000 sten Zeile zu automatisieren.


Viele Grüße,


Ewald

Betrifft: Das ist aber umständlich
von: lupo1
Geschrieben am: 22.07.2020 11:50:15

Du tust Dir keinen Gefallen mit abwechselnden Zeileninhalten. Die Datei wird groß und unlogisch.

...
[4:10000].FillDown
...


mit einer Beispiel-Formel in Zeile 4:

A4: =WENN(ISTGERADE(ZEILE();DeineFormel;)

Betrifft: AW: Das ist aber umständlich
von: Klein
Geschrieben am: 22.07.2020 11:55:19

Naja ich habe halt zum Beispiel in Spalte P,R,T usw formel dich ich quasi in die Übernächste kopieren möchte.

Betrifft: AW: Das ist aber umständlich
von: Klein
Geschrieben am: 22.07.2020 11:57:45

und in der nächste zeile sind werte drin, die ich quasi für meine Formel in der übernächsten Zeile benötige.

Gruß,

Ewald

Betrifft: AW: Individuelle Reihen
von: Klaus M.
Geschrieben am: 23.07.2020 12:21:38

Hi Klein,

ich schließe mich Lupo an - das ist umständlich, unübersichtlich, quatsch. Trotzdem zeige ich dir gern die Lösung auf deine Frage.

Zunächst:
Rows("4:4").Select
Selection.Copy
Rows("6:6").Select
ActiveSheet.Paste
Rows("6:6").Select
Selection.Copy
du kopierst Zeile 4 (ich nehme an da stehen die Formeln) und fügst sie in Zeile 6 ein. Danach kopierst du Zeile 6 - warum? In Zeile 6 steht doch nach dem einfügen das gleiche wie in Zeile 4, da reicht es doch die Kopie von Zeile 4 weiter zu nutzen.

Folgendes Script fügt dir die Formeln aus Zeile 4 in jede gerade Zeile zwischen 6 und 10000 ein, ist dabei aber sowas von Sacklangsam dass du dir am besten nen Kaffee holst:
Sub Test()

'zeile 4 kopieren, bis Zeile 10000
Const fRow As Long = 4
Const lRow As Long = 10000

Dim z As Long
With ActiveSheet
    .Rows(fRow).Copy
    
    For z = fRow + 2 To lRow Step 2
        .Rows(z).PasteSpecial
    Next z
    
End With
Wüsste ich besser, was du eingentlich vorhast, könnte ich vielleicht eine optimierte Version schreiben.

LG,
Klaus

Betrifft: schnellere Variante ohne Schleife
von: Klaus M.
Geschrieben am: 23.07.2020 12:31:00

Hi Ewald,

und hier nochmal eine schnelle, schleifenlose Variante. Nutzt dafür eine Hilfsspalte. Ist vielleicht für den VBA-Anfänger nicht so intuitiv nachzuvollziehen wie eine Schleife, aber dafür schön fix :-)
Statt in 2-er Schritten durchzugehen, generiert der Code erstmal alle zwei Zeilen einen #DIV0! Fehler in einer Hilfsspalte, das geht in einem Rutsch. Dann werden alle fehlerhaften Zellen ausgewählt, und davon die ganze Zeile: jetzt hat das Script jede gerade Zeile in der Hand. In diesen ausgewählten Bereich findet schließlich der Paste-Befehl statt, der dievorher kopierte Formelzeile einfügt.

LG,
Klaus

Sub Test()

'zeile 4 kopieren, bis Zeile 10000
Const fRow As Long = 4
Const lRow As Long = 10000

'unbenutzte Spalte - im Beispiel Spalte 26, also Z.
Const FreeCol As Long = 8

Dim z As Long
With ActiveSheet
    .Range(.Cells(fRow + 2, FreeCol), .Cells(lRow, FreeCol)).FormulaR1C1 = "=1/MOD(ROW(),2)"
    .Rows(fRow).Copy
    .Columns(FreeCol).SpecialCells(xlCellTypeFormulas, 16).EntireRow.PasteSpecial
    .Columns(FreeCol).ClearContents
End With

End Sub


Betrifft: Ich komme zurück auf wechselnde Formeln nacheinan-
von: lupo1
Geschrieben am: 23.07.2020 19:14:49

... der:

Excel erkennt Formeln im Block und schafft dann Platz. Quält man es mit unnötigen Wechseln aufgrund fehlender Philosophie, schlägt es eiskalt mit größerer Dateigröße zurück.

Ich habe schon lange niemanden mehr gesehen, der das a) NICHT weiß oder b) NICHT intuitiv beherzigt.

Betrifft: AW: Ich komme zurück auf wechselnde Formeln nacheinan-
von: Klaus M.
Geschrieben am: 24.07.2020 13:12:56

Jo, voll deiner Meinung, Lupo. Hab ja auch geschrieben, die Tabelle ist wahrscheinlich Mist :-)

Es kann allerdings auch sein, dass das ein Fall von "Chef will es so" ist - hab ich auch schon oft genug gehabt. Wir werden es nie erfahren, da der TE sich ohne "danke" verdrückt hat.

Trotzdem, auch wenn es eine Misttabelle ist: ich finde, eine ordentliche Lösung kann man schon geben, halt mit entsprechendem Hinweis.

LG,
Klaus

Betrifft: Meinst Du mich? Ich weiß doch gar n., wo was steht
von: lupo1
Geschrieben am: 25.07.2020 00:33:47



Beiträge aus dem Excel-Forum zum Thema "Individuelle Reihen"