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

Forumthread: Wert von darüberliegender Zelle kopieren wenn leer

Wert von darüberliegender Zelle kopieren wenn leer
09.12.2008 08:43:00
darüberliegender
Hallo,
ich habe ein Makro:

Sub AuffuellenMarkieren2()
On Error GoTo errorhandler
For Each cell In Selection.SpecialCells(xlCellTypeBlanks)
cell.Value = cell.Offset(-1, 0).Value
Next
Exit Sub
errorhandler:
MsgBox "Keine leeren Zellen vorhanden"
End Sub


Das kopiert den Inhalt der Zelle darüber nach unten wenn die darüberliegende Zelle leer ist.
Funktioniert auch ganz toll, aber wenn ich Zahlen kopiere, die als Text formatiert sind dann bekomme ich nach dem kopieren Zahlen und keine Texte (z.B. Postleitzahlen)
Was muß man ändern um wirklich den Inhalt (evt. mit Formatierung) zu kopieren?
Gruß Lutz

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert von darüberliegender Zelle kopieren wenn leer
09.12.2008 08:47:00
darüberliegender
Hi Lutz,
eine Möglichkeit:

For Each cell In Selection.SpecialCells(xlCellTypeBlanks)
cell.Offset(-1, 0).Copy cell
Next




AW: Wert von darüberliegender Zelle kopieren wenn leer
09.12.2008 08:54:04
darüberliegender
Hallo Karin,
wunderbar - geht wie verrückt.
Du hast mir sehr geholfen.
Vielen Dank und noch einen schönen Tag.
Gruß Lutz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wert von darüberliegender Zelle kopieren, wenn sie leer ist


Schritt-für-Schritt-Anleitung

Um den Wert aus der darüberliegenden Zelle zu übernehmen, wenn die aktuelle Zelle leer ist, kannst Du ein einfaches Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul ein, indem Du im Menü auf Einfügen > Modul klickst.

  3. Kopiere den folgenden Code in das Modul:

    Sub AuffuellenMarkieren2()
        On Error GoTo errorhandler
        For Each cell In Selection.SpecialCells(xlCellTypeBlanks)
            cell.Value = cell.Offset(-1, 0).Value
        Next
        Exit Sub
    errorhandler:
        MsgBox "Keine leeren Zellen vorhanden"
    End Sub
  4. Schließe den VBA Editor und gehe zurück zu Deinem Excel-Dokument.

  5. Markiere die Zellen, in denen Du den Wert kopieren möchtest.

  6. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Jetzt werden die Werte aus der darüberliegenden Zelle übernommen, wenn die Zelle leer ist.


Häufige Fehler und Lösungen

  • Problem: Die Werte werden als Zahl und nicht als Text übernommen.

    • Lösung: Verwende den folgenden Code, um den Wert mit Formatierung zu kopieren:
    For Each cell In Selection.SpecialCells(xlCellTypeBlanks)
        cell.Offset(-1, 0).Copy cell
    Next
  • Problem: Es erscheint eine Fehlermeldung, dass keine leeren Zellen vorhanden sind.

    • Lösung: Stelle sicher, dass Du tatsächlich leere Zellen in der Auswahl hast, oder ändere den Code, um leere Zellen zu ignorieren.

Alternative Methoden

Neben der Verwendung eines Makros kannst Du auch die Funktion WENN in Excel nutzen. Hier ist ein Beispiel:

  1. Gehe zu der Zelle, die leer ist.
  2. Gib die folgende Formel ein:

    =WENN(ISTLEER(A2); A1; A2)

Diese Formel prüft, ob die Zelle A2 leer ist. Wenn ja, wird der Wert aus A1 übernommen.


Praktische Beispiele

Angenommen, Du hast eine Liste von Postleitzahlen, und einige Zellen sind leer. Um die leeren Zellen mit dem Wert der darüberliegenden Zelle zu füllen, kannst Du das Makro oder die Formel wie oben beschrieben benutzen.

  • Beispiel 1: Wenn in Zelle A2 der Wert 12345 steht und A3 leer ist, wird nach dem Ausführen des Makros oder der Formel in A3 ebenfalls 12345 stehen.
  • Beispiel 2: Bei einer Liste von Städten kannst Du auch die gleiche Methode verwenden, um die Namen zu kopieren, wenn eine Zelle leer ist.

Tipps für Profis

  • Um die Effizienz zu steigern, kannst Du das Makro anpassen, um nur einen bestimmten Bereich an Zellen zu bearbeiten.
  • Verwende Application.ScreenUpdating = False, bevor Du das Makro startest, um die Bildschirmaktualisierung während der Ausführung zu deaktivieren und die Geschwindigkeit zu erhöhen. Setze es am Ende wieder auf True.

FAQ: Häufige Fragen

1. Wie kann ich das Makro für eine bestimmte Zelle anpassen?
Du kannst den Code so anpassen, dass er nur auf einen spezifischen Zellbereich anwendbar ist, indem Du Selection durch einen angegebenen Bereich ersetzt (z.B. Range("A1:A10")).

2. Kann ich das Makro in einer anderen Excel-Version verwenden?
Ja, das Makro sollte in den meisten modernen Excel-Versionen funktionieren, solange die VBA-Funktionalität unterstützt wird.

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