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

Forumthread: Spalte kopieren Werte in nächste freie Spalte

Spalte kopieren Werte in nächste freie Spalte
Dietmar
Guten Abend zusammen,
Nachfolgender Code kopiert die Einträge in Spalte C. (Dort befinden sich Formelergebnisse)
und überträgt die Inhalte in die nächste freie Spalte.
Allerdings werden die Formeln übertragen.
Meine Frage:
Wie muss ich nachfolgenden Code ändern, damit nur WERTE übertragen werden?
Herzlichen Dank für erneute Hilfe
Liebe Grüße
Dietmar aus Aachen
Sub Kopieren()
Dim lngLetzteSpalte As Long
lngLetzteSpalte = Cells(2, Columns.Count).End(xlToLeft).Column
Range("C2:C200").Copy Destination:=Cells(2, lngLetzteSpalte + 1)
End Sub

Anzeige

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

Betreff
Benutzer
Anzeige
AW: Spalte kopieren Werte in nächste freie Spalte
11.01.2012 22:47:09
Josef

Hallo Dietmar,
Sub Kopieren()
  Dim lngLetzteSpalte As Long
  
  lngLetzteSpalte = Cells(2, Columns.Count).End(xlToLeft).Column
  
  With Range("C2:C200")
    Cells(2, lngLetzteSpalte + 1).Resize(.Rows.Count, 1) = .Value
  End With
  
End Sub



« Gruß Sepp »

Anzeige
Mal wieder 1000 Dank ...
11.01.2012 22:54:34
Dietmar
Hallo Sepp,
zum xten Mal ganz herzlichen Dank!
Es ist klasse, wenn man so schnelle und kompetente Hilfe bekommt!
Dann kann ich nämlich jetzt sofort weiter tüfteln :-)
Liebe Grüße
Dietmar
Ergänzung nötig für ERSTE freie Spalte
12.01.2012 19:20:14
Dietmar
Hallo Sepp,
doch noch eine Kleinigkeit.
Bei den Tests meiner Datei habe ich festgestellt, dass für eine andere Variante der Bedarf besteht nicht die letzte freie Spalte zu finden, sondern die ERSTE freie Spalte ab Spalte "C", da ansonsten eine befüllte Spalte (z.B. G2:G200) dazu führt, dass der nächste Übertrag nach H2:H200 erfolgt und dabei leere Spalten davor nicht beachtet werden.
Wie müsste die Anpassung dann lauten?
Vielen Dank vorab!
Viele Grüße
Dietmar aus Aachen
Anzeige
Ergänzung für ERSTE freie Spalte
12.01.2012 19:24:14
Dietmar
... hatte nur vergessen, anzuklicken, dass die Frage offen ist, daher noch kurz diese Ergänzung mit dem Hinweis auf den Beitrag von eben. Danke!
AW: Ergänzung für ERSTE freie Spalte
12.01.2012 20:40:06
Josef

Hallo Dietmar,
da gibt es einige Möglichkeiten, z. B. so.
Sub Kopieren()
  Dim lngFirstFree As Long, strRange As String
  
  strRange = Range(Cells(2, 4), Cells(2, Columns.Count)).Address(0, 0)
  
  lngFirstFree = Evaluate("MIN(IF(ISBLANK(" & strRange & _
    "),COLUMN(" & strRange & ")))")
  
  With Range("C2:C200")
    Cells(2, lngFirstFree).Resize(.Rows.Count, 1) = .Value
  End With
  
End Sub



« Gruß Sepp »

Anzeige
freu :-) DANKE
12.01.2012 21:07:45
Dietmar
Hallo Sepp,
du müsstest mich sehen. Freu mich wie ein Schneekönig, wie gut und flott das funktioniert.
Schade nur, dass ich auf solche Ergebnisse nicht komme.
Aber es gibt ja Dich/Euch und dieses tolle Forum!
Herzlichen Dank
Viele Grüße
Dietmar aus Aachen

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalte kopieren: Werte in die nächste freie Spalte übertragen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und aktiviere das VBA-Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen:

    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Code einfügen:

    • Füge den folgenden Code ein, um die Werte aus Spalte C in die nächste freie Spalte zu kopieren:
Sub Kopieren()
    Dim lngLetzteSpalte As Long
    lngLetzteSpalte = Cells(2, Columns.Count).End(xlToLeft).Column
    With Range("C2:C200")
        Cells(2, lngLetzteSpalte + 1).Resize(.Rows.Count, 1) = .Value
    End With
End Sub
  1. Makro ausführen:
    • Schließe den VBA-Editor und führe das Makro aus, indem du Alt + F8 drückst, das Makro „Kopieren“ auswählst und auf Ausführen klickst.

Häufige Fehler und Lösungen

  • Fehler: Formeln werden kopiert statt Werte:

    • Stelle sicher, dass du .Value im Code verwendest, wie im obigen Beispiel. Dadurch werden nur die Werte und nicht die Formeln kopiert.
  • Problem: Nächste freie Spalte wird nicht richtig erkannt:

    • Überprüfe, ob die Zellen in der Zeile 2 tatsächlich leer sind. Der Code sucht nach der letzten belegten Spalte.

Alternative Methoden

  • Kopieren mit Transponieren:
    • Wenn du die Werte horizontal übertragen möchtest, kannst du folgendes verwenden:
Cells(2, lngLetzteSpalte + 1).Resize(1, .Columns.Count) = Application.Transpose(.Value)
  • Erste freie Spalte finden:
    • Möchtest du die erste freie Spalte ab Spalte C finden? Verwende diesen Code:
Sub KopierenErsteFreieSpalte()
    Dim lngFirstFree As Long, strRange As String
    strRange = Range(Cells(2, 4), Cells(2, Columns.Count)).Address(0, 0)
    lngFirstFree = Evaluate("MIN(IF(ISBLANK(" & strRange & "),COLUMN(" & strRange & "))")

    With Range("C2:C200")
        Cells(2, lngFirstFree).Resize(.Rows.Count, 1) = .Value
    End With
End Sub

Praktische Beispiele

  1. Einfaches Kopieren:

    • Wenn du nur einen bestimmten Bereich kopieren möchtest, kannst du die Zeilen im Code anpassen. Zum Beispiel von C2:C50.
  2. Erste freie Spalte nutzen:

    • Verwende den angepassten Code aus der vorherigen Sektion, um sicherzustellen, dass du die erste freie Spalte ab Spalte C verwendest.

Tipps für Profis

  • Fehlerbehandlung einfügen:
    • Füge eine Fehlerbehandlungsroutine hinzu, um mögliche Laufzeitfehler elegant zu handhaben:
On Error Resume Next
' Dein Code hier
On Error GoTo 0
  • Makros effizient nutzen:
    • Speichere deine Excel-Datei im .xlsm-Format, um Makros zu aktivieren und sie effizient zu nutzen.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um mehrere Spalten zu kopieren? Du kannst die Range in der With-Anweisung anpassen, zum Beispiel Range("C2:E200"), um mehrere Spalten zu kopieren.

2. Was passiert, wenn ich das Makro mehrmals ausführe? Wenn du das Makro mehrmals ausführst, werden die Werte in die nächste freie Spalte geschrieben, solange diese leer ist. Achte darauf, dass du keine Daten überschreibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige