Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Zeilen untereinander kopieren

VBA - Zeilen untereinander kopieren
01.02.2021 13:41:43
Kurt
Hallo,
ich habe folgendes Problem, wo ich mit meinen VBA Ansätzen nicht weiter komme:
Tabellenblatt 1: Daten (Zahlen) in den Zeilen 1-50 von z.B. Spalte A - D
Tabellenblatt 2: Die Daten von Tabellenblatt 1 sollen untereinander in Spalte A angeordnet werden.
Problem: Zuerst Zeile 1 A -D, danach Zeile 2 A - D, danach Zeile 3 A - D usw.
Ich scheitere an dem Problem. Hat Jemand einen guten Tipp?
Viele Grüße
Kurt
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zeilen untereinander kopieren
01.02.2021 13:46:57
Rudi
Hallo,
Sub aaaa()
Dim rQ As Range, rC As Range
Dim z As Integer
Set rQ = Sheets(1).Range("A1:D50")
For Each rC In rQ
z = z + 1
Sheets(2).Cells(z, 1) = rC.Value
Next rC
End Sub

Gruß
Rudi
AW: VBA - Zeilen untereinander kopieren
01.02.2021 17:05:57
Kurt
Hallo Rudi,
vielen Dank, das hat mein Problem gelöst.
Gruß Kurt
Anzeige
AW: VBA - Zeilen untereinander kopieren
01.02.2021 14:00:52
Daniel
Hi
hier helfen Formeln und Excelkenntnisse weiter, auch in VBA
Sub test()
With Sheets("Tabelle2").Range("A1:A200")
.Formula = "=INDEX(Tabelle1!A:D,INT((ROW(A1)-1)/4)+1,MOD(ROW(A1)-1,4)+1)"
.Formula = .Value
End With
End Sub
Gruß Daniel
AW: VBA - Zeilen untereinander kopieren
01.02.2021 15:08:53
Kurt
Hallo Daniel,
vielen Dank schon mal. Das funktioniert prinzipiell so, wie ich es brauche. Nur folgendes Problem. Steht
in einer Zeile nur eine Zahl in Spalte A, erzeugt es bei der Auswertung nach unten immer 3 aufeinanderfolgende Nullen.
Bsp.
25
0
0
0
und dann geht es normal weiter.
Vielen Dank Kurt
Anzeige
AW: VBA - Zeilen untereinander kopieren
01.02.2021 15:17:00
Daniel
Hi
normal. Excel gibt immer 0 als Ergebnis aus, wenn ein Zellbezug auf eine leere Zelle verweist.
wenn man was anderes haben will, muss man statt bspw: =A1 dann: =Wenn(A1="";"";A1) formulieren
(hier entspricht die komplette formel dem A1)
Gruß Daniel
AW: VBA - Zeilen untereinander kopieren
01.02.2021 15:21:51
Kurt
Hallo Daniel, vielen Dank, ich stricke es mal um. Wenn es geklappt hat, melde ich mich.
Danke Kurt
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen untereinander kopieren mit VBA in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade deine Arbeitsmappe mit den entsprechenden Tabellenblättern.
  2. Wechsel in den VBA-Editor: Drücke ALT + F11.
  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject“, wähle „Einfügen“ und dann „Modul“.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub aaaa()
       Dim rQ As Range, rC As Range
       Dim z As Integer
       Set rQ = Sheets(1).Range("A1:D50")
       For Each rC In rQ
           z = z + 1
           Sheets(2).Cells(z, 1) = rC.Value
       Next rC
    End Sub
  5. Führe das Skript aus: Drücke F5 oder wähle „Run“ aus dem Menü. Deine Daten aus „Tabellenblatt 1“ sollten jetzt untereinander in „Tabellenblatt 2“ kopiert sein.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe, ob die angegebenen Blattnamen korrekt sind und existieren.
  • Fehler: Daten werden nicht korrekt untereinander angeordnet

    • Lösung: Stelle sicher, dass das Range korrekt definiert ist und alle Zellen die erwarteten Werte enthalten.

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch Formeln verwenden. Hier ist ein Beispiel von Daniel:

Sub test()
    With Sheets("Tabelle2").Range("A1:A200")
        .Formula = "=INDEX(Tabelle1!A:D,INT((ROW(A1)-1)/4)+1,MOD(ROW(A1)-1,4)+1)"
        .Formula = .Value
    End With
End Sub

Dieser Code verwendet die INDEX-Funktion, um die Werte aus „Tabelle1“ zu extrahieren und in „Tabelle2“ untereinander anzuordnen.


Praktische Beispiele

Angenommen, du hast im „Tabellenblatt 1“ folgende Daten:

A B C D
1 2 3 4
5 6 7 8

Nach dem Ausführen des VBA-Codes sind die Daten in „Tabellenblatt 2“ wie folgt angeordnet:

A
1
2
3
4
5
6
7
8

Tipps für Profis

  • Optimierung des Codes: Du kannst die Leistung verbessern, indem du Application.ScreenUpdating und Application.Calculation vor und nach dem Ausführen des Codes deaktivierst und aktivierst:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Probleme zu identifizieren und zu lösen:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Was mache ich, wenn ich mehr als 50 Zeilen kopieren möchte? Du kannst den Bereich in Set rQ = Sheets(1).Range("A1:D50") anpassen, z.B. auf Range("A1:D100").

2. Wie kann ich sicherstellen, dass leere Zellen nicht als Nullwerte angezeigt werden? Verwende die Wenn-Funktion, um leere Zellen zu ignorieren. Beispiel: =Wenn(A1="";"";A1).

3. Funktioniert dieser Code in allen Excel-Versionen? Ja, dieser VBA-Code sollte in allen modernen Excel-Versionen wie Excel 2010, 2013, 2016, 2019 und Microsoft 365 funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige