Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalten untereinander kopieren

Spalten untereinander kopieren
22.08.2016 20:26:29
juskri
Hallo liebe VBA-Profis,
wäre sehr dankbar wenn man mir bei folgendem Problem weiterhelfen würden.
Würde gerne nacheinander stehenden Spalteninhalt automatisch, also mit einem VBA-Code untereinander kopieren.
https://www.herber.de/bbs/user/107780.xlsm
Hier die Rohdaten in der ersten Tabelle und die gewünschte Lösung in der zweiten Tabelle.
Vielen Dank im Voraus
Wäre echt dankbar wenn mir einer den Code so aufbereitet, dass man dannach selbst die gewünschte Trennung der Spalten anpassen kann.
Beste Grüße
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten untereinander kopieren
22.08.2016 21:46:04
fcs
Hallo JusKri,
hier ein entsprechendes Makro:
Sub Copydata_umgruppiert()
Dim wks_Roh As Worksheet
Dim wks_Loes As Worksheet
Dim Spa_Roh As Long, Zei_Roh As Long, Zei_Loes As Long
Dim Spa_L_Roh As Long, Zei_L_Roh As Long
Set wks_Roh = ActiveWorkbook.Sheets(1)  'Rohdaten
Set wks_Loes = ActiveWorkbook.Sheets(2) 'Lösung
With Application
.ScreenUpdating = False
End With
'Altdaten in Zielblatt löschen
With wks_Loes
.Range(.Columns(1), .Columns(10)).Clear
End With
Zei_Loes = 0
With wks_Roh
Zei_L_Roh = .UsedRange.Row + .UsedRange.Rows.Count - 1
Spa_L_Roh = .UsedRange.Column + .UsedRange.Columns.Count - 1
For Spa_Roh = 1 To Spa_L_Roh Step 10
For Zei_Roh = 1 To Zei_L_Roh
Zei_Loes = Zei_Loes + 1
.Range(.Cells(Zei_Roh, Spa_Roh), .Cells(Zei_Roh, Spa_Roh + 9)).Copy _
wks_Loes.Cells(Zei_Loes, 1)
Next
Next
End With
With Application
.ScreenUpdating = True
End With
End Sub
Gruß
Franz
Anzeige
AW: Spalten untereinander kopieren
22.08.2016 22:06:00
juskri
Hallo Franz,
vielen lieben Dank. Funktioniert hervorragend!!! Eine Frage hätte ich doch noch. Was müsste ich denn im VBA-Code ändern, wenn z.B. jeweils 4 Spalten statt 10 wie in meinem angehängten Dokument untereinander kopieren möchte?
Danke im Voraus.
MFG
juskri
AW: Spalten untereinander kopieren
22.08.2016 22:31:00
fcs
Hallo JusKri,
in Code musst du die 10er durch 4 und die 9 durch 3 ersetzen.
In der nachfolgen optimierten Form des Makros musst nur den Wert der Variablen "Anz_Spa" (Anzahl Spalten je Block) anpassen.
MfG
Franz
Sub Copydata_umgruppiert()
Dim wks_Roh As Worksheet
Dim wks_Loes As Worksheet
Dim Spa_Roh As Long, Zei_Roh As Long, Zei_Loes As Long
Dim Spa_L_Roh As Long, Zei_L_Roh As Long
Dim Anz_Spa As Long
Set wks_Roh = ActiveWorkbook.Sheets(1)  'Rohdaten
Set wks_Loes = ActiveWorkbook.Sheets(2) 'Lösung
Anz_Spa = 10 'Anzahl Spalten je Datenblock
With Application
.ScreenUpdating = False
End With
'Altdaten in Zielblatt löschen
With wks_Loes
.Range(.Columns(1), .Columns(Anz_Spa)).Clear
End With
Zei_Loes = 0
With wks_Roh
Zei_L_Roh = .UsedRange.Row + .UsedRange.Rows.Count - 1
Spa_L_Roh = .UsedRange.Column + .UsedRange.Columns.Count - 1
For Spa_Roh = 1 To Spa_L_Roh Step Anz_Spa
For Zei_Roh = 1 To Zei_L_Roh
Zei_Loes = Zei_Loes + 1
.Range(.Cells(Zei_Roh, Spa_Roh), .Cells(Zei_Roh, Spa_Roh + Anz_Spa - 1)).Copy _
wks_Loes.Cells(Zei_Loes, 1)
Next
Next
End With
With Application
.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Spalten untereinander kopieren
23.08.2016 05:16:26
juskri
Guten Morgen Franz,
vielen Dank für deine Mühe und deine schnelle Antwort. Diese Lösung ist noch besser!!!
Gruß
juskri
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalten untereinander kopieren in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um Spalten untereinander zu kopieren, benötigst du ein einfaches VBA-Makro. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul:

    • Klicke auf „Einfügen“ und wähle „Modul“.
  3. Füge den folgenden Code ein:

    Sub Copydata_umgruppiert()
       Dim wks_Roh As Worksheet
       Dim wks_Loes As Worksheet
       Dim Spa_Roh As Long, Zei_Roh As Long, Zei_Loes As Long
       Dim Spa_L_Roh As Long, Zei_L_Roh As Long
       Dim Anz_Spa As Long
    
       Set wks_Roh = ActiveWorkbook.Sheets(1)  ' Rohdaten
       Set wks_Loes = ActiveWorkbook.Sheets(2) ' Lösung
       Anz_Spa = 10 ' Anzahl Spalten je Datenblock
    
       With Application
           .ScreenUpdating = False
       End With
    
       ' Altdaten in Zielblatt löschen
       With wks_Loes
           .Range(.Columns(1), .Columns(Anz_Spa)).Clear
       End With
    
       Zei_Loes = 0
       With wks_Roh
           Zei_L_Roh = .UsedRange.Row + .UsedRange.Rows.Count - 1
           Spa_L_Roh = .UsedRange.Column + .UsedRange.Columns.Count - 1
    
           For Spa_Roh = 1 To Spa_L_Roh Step Anz_Spa
               For Zei_Roh = 1 To Zei_L_Roh
                   Zei_Loes = Zei_Loes + 1
                   .Range(.Cells(Zei_Roh, Spa_Roh), .Cells(Zei_Roh, Spa_Roh + Anz_Spa - 1)).Copy _
                   wks_Loes.Cells(Zei_Loes, 1)
               Next
           Next
       End With
    
       With Application
           .ScreenUpdating = True
       End With
    End Sub
  4. Passe die Variable Anz_Spa an, wenn du eine andere Anzahl von Spalten untereinander kopieren möchtest (z.B. auf 4 ändern, um vier Spalten zu kopieren).

  5. Führe das Makro aus, indem du im VBA-Editor F5 drückst oder zurück zu Excel gehst und das Makro über die Entwicklertools startest.


Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“

    • Lösung: Stelle sicher, dass die Arbeitsblätter „Rohdaten“ und „Lösung“ korrekt benannt sind.
  • Fehler: „Anwendungsfehler“

    • Lösung: Überprüfe, ob die angegebene Anzahl an Spalten im Code mit der tatsächlichen Anzahl an Spalten in den Rohdaten übereinstimmt.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du die Funktion „Kopieren“ und „Transponieren“ in Excel nutzen:

  1. Markiere die Spalten, die du kopieren möchtest.
  2. Kopiere die Daten (CTRL + C).
  3. Gehe zu der Zelle, wo die Daten eingefügt werden sollen.
  4. Rechtsklick und wähle „Inhalte einfügen“ und dann „Transponieren“.

Diese Methode ist schneller, wenn du keine große Datenmenge verarbeiten musst.


Praktische Beispiele

Angenommen, du hast Daten in den Spalten A bis J in einem Excel-Blatt:

  • Wenn du die Daten untereinander kopieren möchtest, indem du jede Gruppe von 10 Spalten in eine neue Zeile verschiebst, richte das Makro wie oben beschrieben ein und passe die Variable Anz_Spa an.

Tipps für Profis

  • Optimierung des Codes: Du kannst den VBA-Code weiter optimieren, indem du zusätzliche Bedingungen hinzufügst, um nur bestimmte Daten zu kopieren.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im Code, um unerwartete Fehler während der Ausführung abzufangen.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der zu kopierenden Spalten ändern?
Ändere einfach den Wert der Variable Anz_Spa im VBA-Code.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und neuer) funktionieren.

3. Was mache ich, wenn ich mehr als 10 Spalten habe?
Passe die Schleifen im VBA-Code an, indem du den Schrittwert in der For-Schleife änderst und die Anzahl der Spalten in Anz_Spa entsprechend erhöhst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige