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

Forumthread: Spalte durchlaufen, leere Zelle suche und kopiere

Spalte durchlaufen, leere Zelle suche und kopiere
15.01.2009 11:01:23
Joachim
Hallo
Habe mal wieder ein schwerwiegendes Problem:
Ich möchte in meiner Tabelle die Spalte B mit einer Schleife durchlaufen. Wenn eine leere Zelle gefunden wird, soll nachgeschaut werden, ob die daneben liegende A-Zelle auch leer ist. Wenn ja, soll in der Spalte B und C die Information von einer Zeile höher reinkopiert werden.
Kriegt man das mit einem Makro hin ?
Hört sich kompliziert an, oder.
Habe hier mal ein Beispiel
https://www.herber.de/bbs/user/58416.xls
Gruss
Joachim
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte durchlaufen, leere Zelle suche und kopiere
15.01.2009 11:13:00
Ramses
Hallo
probier mal

Sub CopyCells()
Dim i As Long
Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastRow
If IsEmpty(Cells(i, 1)) And IsEmpty(Cells(i, 2)) Then
Range(Cells(i - 1, 2), Cells(i - 1, 3)).Copy Destination:=Cells(i, 2)
End If
Next i
End Sub


Gruss Rainer

Anzeige
AW: Spalte durchlaufen, leere Zelle suche und kopiere
15.01.2009 12:03:36
Joachim
Hallo Rainer,
ja danke funktioniert prima. Vielleicht , (wenn Lust) noch eine kleine Bitte:
wie kann ich den die betroffennen Zellen, also die, wo vorher leer waren und was reinkopiert wurde, noch den HIntergrund farblich markieren
(Zur besseren Übersicht)
Danke
Joachim
AW: Spalte durchlaufen, leere Zelle suche und kopiere
15.01.2009 13:08:00
D.Saster
Hallo,
Range(Cells(i, 2), Cells(i, 3)).Interior.ColorIndex = 3 'ggfs. anpassen
Gruß
Dierk
Anzeige
Danke, geht oT
15.01.2009 18:49:15
Joachim
AW: Spalte durchlaufen, leere Zelle suche und kopiere
15.01.2009 11:14:16
D.Saster
Hallo,
das geht auch ohne Makro.
Erst mal eine Überschrift rein!
Bearbeiten-Gehe zu-Inhalte-Leerzellen.
Formel eintragen: =Wenn($A4="";B3;"") und mit strg+Enter abschließen. Fertig.
Alternativ mit Makro:

Sub tt()
Dim rngC As Range
Application.ScreenUpdating = False
For Each rngC In Columns(2).SpecialCells(xlCellTypeBlanks)
If rngC.Row > 1 Then
If IsEmpty(rngC.Offset(0, -1)) Then
rngC = rngC.Offset(-1, 0)
rngC.Offset(0, 1) = rngC.Offset(-1, 1)
End If
End If
Next
Application.ScreenUpdating = True
End Sub


Gruß
Dierk

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Leere Zellen in Excel durchlaufen und kopieren


Schritt-für-Schritt-Anleitung

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

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBA-Projekt (DeineDatei)" im Projekt-Explorer.
    • Wähle "Einfügen" und dann "Modul".
  3. Füge den folgenden Code ein:

    Sub CopyCells()
       Dim i As Long
       Dim lastRow As Long
       lastRow = Cells(Rows.Count, 2).End(xlUp).Row
       For i = 2 To lastRow
           If IsEmpty(Cells(i, 1)) And IsEmpty(Cells(i, 2)) Then
               Range(Cells(i - 1, 2), Cells(i - 1, 3)).Copy Destination:=Cells(i, 2)
           End If
       Next i
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und kehre zu Excel zurück.
    • Drücke ALT + F8, wähle "CopyCells" und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Runtime Error 1004":

    • Lösung: Stelle sicher, dass die Spalte B tatsächlich leere Zellen enthält. Überprüfe auch, ob in der Spalte A die Bedingungen erfüllt sind.
  • Fehler: Zellen werden nicht kopiert:

    • Lösung: Achte darauf, dass das Makro in der richtigen Arbeitsmappe läuft und die Daten in der erwarteten Struktur vorliegen.

Alternative Methoden

Es gibt auch eine Möglichkeit, diese Aufgabe ohne ein Makro zu erledigen:

  1. Markiere die Spalte B.
  2. Gehe zu „Bearbeiten“ > „Gehe zu“ > „Inhalte“ > „Leerzellen“.
  3. Verwende die folgende Formel in der ersten leeren Zelle:
    =WENN($A4="";B3;"")
  4. Drücke STRG + ENTER, um die Formel auf die gesamte Spalte anzuwenden.

Praktische Beispiele

  • Beispiel 1: Angenommen, in Spalte A und B hast du folgende Daten:

    A     B
    1     10
    2     
    3     30
    4     

    Nach Ausführung des Makros wird Spalte B wie folgt aussehen:

    A     B
    1     10
    2     10
    3     30
    4     30
  • Beispiel 2: Um die Zellen farblich zu markieren, kannst du den folgenden Code anpassen:

    Range(Cells(i, 2), Cells(i, 3)).Interior.ColorIndex = 3  'Rot

Tipps für Profis

  • Du kannst die Application.ScreenUpdating auf False setzen, um die Ausführungsgeschwindigkeit zu erhöhen, wenn du viele Zellen durchläufst.
  • Denke daran, deine VBA-Projekte regelmäßig zu speichern, um Datenverlust zu vermeiden.
  • Experimentiere mit der ColorIndex-Eigenschaft, um verschiedene Farben anzuwenden und die Übersichtlichkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um mehr Spalten zu kopieren? Du kannst die Range-Funktion im Code anpassen, um mehr Zellen zu kopieren. Ersetze Range(Cells(i - 1, 2), Cells(i - 1, 3)) mit der gewünschten Range.

2. Ist es möglich, diesen Prozess zu automatisieren, sodass er bei jeder Änderung in der Tabelle ausgeführt wird? Ja, du kannst das Makro im Worksheet_Change-Ereignis der Tabelle einfügen, um es automatisch auszuführen, wenn Änderungen vorgenommen werden.

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