Wie kann ich Zelleninhalte via Makro mit Zellenabstand kopieren?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du willst den Spalteninhalt inkluse der Spaltenbreite Von Tabelle1 auf Tabelle2 übertragen, oder?

Dann so:

Sub Makro1()
'Kopieren
 Sheets("Tabelle1").Columns("B:B").Copy
'Einfügen
Sheets("Tabelle2").Select
Columns("B:B").Select
ActiveSheet.Paste
End Sub

Ich danke dir für die Schnelle Antwort!
Die Spaltenbreite ist nicht mein Problem.

Ich möchte die Inhalte aus Zelle "Tabelle1!A3" in "Tabelle2!C1" kopieren

Der Inhalt von Zelle "Tabelle1!A4" in "Tabelle2!C85"

Der Inhalt von Zelle "Tabelle1!A5" in "Tabelle2!C169"

Der Abstand beträgt immer 84 Zellen in Tabelle 2. Das ganze sollte dann 367 mal passieren, theoretisch bis Zelle "Tabelle2!C30829"

Weiß nicht ob es verständlich ist :/

0
@Carbon69

Das ist auch recht easy.

Bittesehr:

Sub kopierentest()
Dim i As Integer 'Schleifenzähler + Zeilenzähler Tabelle1
Dim j As Integer 'Zeilenzähler Tabelle2

'Zeilenzähler in Tabelle2 in Zeile 1 starten
j = 1

'Schleife starten
For i = 1 To 367 '367 mal wiederholen
'Kopieren (3+i weil in Zeile 4 begonnen wird)
Sheets("Tabelle1").Cells(3 + i, 1).Copy
'Einfügen (3 für Spalte C)
Sheets("Tabelle2").Select
Cells(j, 3).Select
ActiveSheet.Paste
'Weiterzählen für nächste Schleife
j = j + 84
i = i + 1
Next

End Sub
1
@verreisterNutzer

Ein kleiner Fehler ist noch drin. Du lässt i als Schleifenvariable laufen und erhöhst i nochmal innerhalb der Schleife per Befehl. Somit wird i immer um 2 erhöht und damit nur jede 2. Zeile kopiert.

1
@ProRatione

Nachtrag. i müsste ferner bei 0 starten um auch den ersten Wert zu kopieren.

1
@ProRatione

Oh. mein Fehler. Mit loop verwechselt :) (Danke für den Hinweis)

Das i bei 0 starten sollte stimmt nicht.
Ich beginne bei 1 = Zeile1 um eben den ersten zu erfassen.
Um bei 4 zu beginnen schreib ich daher ja "3+i"

Code sollte heißen:

Sub kopierentest()
Dim i As Integer 'Schleifenzähler + Zeilenzähler Tabelle1
Dim j As Integer 'Zeilenzähler Tabelle2

'Zeilenzähler in Tabelle2 in Zeile 1 starten
j = 1

'Schleife starten
For i = 1 To 367 '367 mal wiederholen
'Kopieren (3+i weil in Zeile 4 begonnen wird)
Sheets("Tabelle1").Cells(3 + i, 1).Copy
'Einfügen (3 für Spalte C)
Sheets("Tabelle2").Select
Cells(j, 3).Select
ActiveSheet.Paste
'Weiterzählen für nächste Schleife
j = j + 84
Next

End Sub



1

Ich möchte die Inhalte aus Zelle "Tabelle1!A3" in "Tabelle2!C1" kopieren
Der Inhalt von Zelle "Tabelle1!A4" in "Tabelle2!C85"
Der Inhalt von Zelle "Tabelle1!A5" in "Tabelle2!C169"

Muss es unbedingt VBA sein?
Das ginge auch per Formel:
In Tabelle2!C1 diese Formel und runterkopieren bis C30829:

=WENN(REST(ZEILE(A1)-1;84)=0;INDEX(Tabelle1!$A$3:$A$1000;GANZZAHL((ZEILE(A1)-1)/84)+1);"")

Allerdings hast Du in den leeren Zellen dazwischen dann auch die Formeln stehen.
Wenn die stören, lassen sie sich aber auch schnell entfernen. Ändere dazu die obige Formel in:

=WENN(REST(ZEILE(A1)-1;4)=0;INDEX(Tabelle1!$A$3:$A$10;GANZZAHL((ZEILE(A1)-1)/4)+1);#NV)

Jetzt steht in den vorher leeren Zellen immer #NV.
Nun markierst Du die gesamte Spalte C.
Drückst F5 (Gehe zu...).
Dort auf: Inhalte.../Formeln --> Häkchen nur bei Fehler stehen lassen.
OK.
Taste "Entf" drücken.
Fertig.

Hilft Dir das?

Woher ich das weiß:Beruf – IT-Administrator (i.R.)

eine sehr schöne Lösung, für mich neu die Methode zur Fehlerentfernung! DH und danke!

1
@Iamiam

@lamiam:

Danke fürs Lob 🙂
Das mit dem Fehler erzeugen und dann mit F5 entfernen habe ich mir auch gerade erst erarbeitet.
Dass F5 (Gehe zu.../ Inhalte...) ein recht mächtiges Tool ist, habe ich aber schon länger entdeckt.
Ich wollte zuerst vorschlagen, einfach mit Kopieren und Inhalte einfügen/ Werte das Ganze zu erledigen, aber erstens würden dann Änderungen in Tabell1 nicht mehr aktualisiert und zweitens habe ich festgestellt, dass dann die Zellen, die mit "" gefüllt wurden nicht sauber geleert sind.
Teste mal:
A1: =""
B1 = A1+5
--> B1: #WERT
War klar.
Jetzt A1 Kopieren/ Inhalte einfügen...
-->B1: #WERT
Jetzt A1 --- Entf:
--> B1: 5(so wie bei jeder "normal" leeren Zelle auch)

1
@Oubyi

prima!

Noch @ carbon69:

...und runterkopieren bis C30829

  • Das geht recht schnell so:
  • die Formel-Zelle Tabelle2!C1 kopieren
  • ins Adressfeld (links oben) C30829 reinschreiben
  • Eingabe: der Cursor springt auf die genannte Adresse
  • Umschalten festhalten
  • Ende, dann Pfeil nach oben drücken: der gesamte Bereich ist ausgewählt
  • Einfügen (zB Strg+v) : Die Formel steht jetzt in jeder Zelle.
  • geht schneller als mühsam nach unten ziehen, das dauert für so viele Zellen recht lang! 
2

Was möchtest Du wissen?