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

Forumthread: ExcelVBA nur gefüllte Zellen einer Spalte kopieren

ExcelVBA nur gefüllte Zellen einer Spalte kopieren
23.10.2012 20:53:36
Frank
Hallo zusammen,
ich bin noch ein VBA Neuling und hoffe, dass Ihr mir helfen könnt.
Ich möchte in einer Arbeitsmappe die Spalte B ab Zeile 2 die gefüllten Zellen von Tabelle 1 nach Tabelle 2 Spalte B3 kopieren.
Dies habe ich mit dem Makrorecorder hinbekommen, aber nur mit einem festen Wert.
Sub kopieren01()
Sheets("Tabelle1").Select
Range("B2:B44").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Da aber die Spalte unterschiedlich gefüllt ist, möchte ich, statt des festen Wert B44 immer soweit, wie die Zellen in der Spalte gefüllt sind, diese kopieren.
Vielleicht könnt Ihr mir weiterhelfen.
Vielen Dank im Voraus
Frank

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: ExcelVBA nur gefüllte Zellen einer Spalte kopieren
23.10.2012 21:11:36
hary
Hallo Frank
With Sheets("Tabelle1")
.Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row + 1).Copy
Sheets("Tabelle2").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,  _
SkipBlanks _
:=False, Transpose:=False
End With

gruss hary

Anzeige
AW: Korrektur
23.10.2012 21:13:30
hary
Hallo
Nimm diesen.
With Sheets("Tabelle1")
.Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row).Copy
Sheets("Tabelle2").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,  _
SkipBlanks _
:=False, Transpose:=False
End With
Application.CutCopyMode = False

gruss hary

Anzeige
AW: ExcelVBA nur gefüllte Zellen einer Spalte kopieren
23.10.2012 21:16:39
Peter
Hallo Frank,
versuche es einmal so:
Sub kopieren01()
With ThisWorkbook.Worksheets("Tabelle1")
.Range("B2:B44").Copy
ThisWorkbook.Worksheets("Tabelle2").Range("B3"). _
PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=True, Transpose:=False
End With
End Sub

Gruß Peter

Anzeige
AW: @Peter
23.10.2012 21:25:30
hary
Hallo Peter
Zitat:
"statt des festen Wert B44 immer soweit, wie die Zellen in der Spalte gefüllt "
gruss hary

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ExcelVBA: Nur gefüllte Zellen einer Spalte kopieren


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu der Arbeitsmappe, in der du die gefüllten Zellen kopieren möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Klicke auf "Einfügen" und wähle "Modul".

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub kopierenGefuellteZellen()
       With Sheets("Tabelle1")
           .Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row).Copy
           Sheets("Tabelle2").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       End With
       Application.CutCopyMode = False
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Drücke ALT + F8, wähle kopierenGefuellteZellen und klicke auf "Ausführen".

Mit diesem Makro werden alle gefüllten Zellen von Spalte B in Tabelle1 nach Tabelle2 ab Zelle B3 kopiert.


Häufige Fehler und Lösungen

  • Fehler: "Die Methode 'Range' für das Objekt 'Worksheet' ist fehlgeschlagen."
    Lösung: Überprüfe, ob die Tabellennamen korrekt sind. Stelle sicher, dass die Tabellen "Tabelle1" und "Tabelle2" existieren.

  • Fehler: Das Makro kopiert leere Zellen.
    Lösung: Stelle sicher, dass der Parameter SkipBlanks auf False gesetzt ist, um nur die gefüllten Zellen zu kopieren.


Alternative Methoden

  1. Excel-Funktion nutzen: Du kannst auch die Funktion FILTER verwenden (verfügbar in neueren Excel-Versionen), um nur die gefüllten Zellen anzuzeigen:

    =FILTER(Tabelle1!B2:B100, Tabelle1!B2:B100<>"")
  2. Manuelle Auswahl: Du kannst auch alle gefüllten Zellen manuell markieren:

    • Wähle die gesamte Spalte B aus.
    • Drücke F5, wähle "Spezial" und dann "Nur die gefüllten Zellen".

Praktische Beispiele

  • Beispiel 1: Kopiere gefüllte Zellen von Spalte A nach Spalte C in der gleichen Tabelle:

    Sub kopierenGefuellteZellenA_C()
       With Sheets("Tabelle1")
           .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy
           .Range("C2").PasteSpecial Paste:=xlPasteValues
       End With
    End Sub
  • Beispiel 2: Kopiere nur die befüllten Zellen von Spalte B in eine andere Arbeitsmappe:

    Sub kopierenBefuellteZellenAndereMappe()
       Dim ZielMappe As Workbook
       Set ZielMappe = Workbooks.Open("Pfad\Zur\Zielmappe.xlsx")
       With Sheets("Tabelle1")
           .Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row).Copy
           ZielMappe.Sheets("ZielTabelle").Range("B3").PasteSpecial Paste:=xlPasteValues
       End With
       ZielMappe.Close SaveChanges:=True
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang deines Codes, um die Leistung zu verbessern, wenn du viele Zellen kopierst.
  • Nutze Named Ranges für wiederkehrende Zellbereiche, um deinen Code übersichtlicher zu gestalten.
  • Experimentiere mit xlPasteAll anstelle von xlPasteValues, wenn du auch Formatierungen beibehalten möchtest.

FAQ: Häufige Fragen

1. Wie kann ich nur die gefüllten Zellen anzeigen?
Du kannst die Funktion FILTER verwenden oder die gefüllten Zellen mit STRG + G und der Auswahl "Spezial" sichtbar machen.

2. Was ist der Unterschied zwischen PasteSpecial und Paste?
PasteSpecial ermöglicht es dir, spezifische Aspekte der kopierten Daten (wie nur Werte oder Formate) zu wählen, während Paste alle Aspekte zusammen einfügt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige