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

Wenn Zelle leer, dann Wert darüber

Forumthread: Wenn Zelle leer, dann Wert darüber

Wenn Zelle leer, dann Wert darüber
14.06.2006 14:21:59
Matthias
Hallo,
ich habe folgendes Problem:
Ich möchte, dass eine Spalte (Tabelle1) durchsucht wird in der Werte (Zahlen) stehen. Enthält die nächste Zelle keinen Wert mehr, dann soll der Wert der vorherigen Zellen genommen werden und in die Tabelle2 an der Zelle A3 eingefügt werden.
Vielen Dank für Eure Mithilfe
Gruß
Matthias
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zelle leer, dann Wert darüber
14.06.2006 15:05:21
fcs
Hallo Mathias,
eines der beiden Makros tut es. Das 1. Makro findet auch leere Zellen innerhalb einer ausgefüllten Spalte. Das 2. Makro ist schneller und findet die letzte mit Wert belegte Zeile in der Spalte.

Sub Makro1()
' Sucht in Spalte erste Zelle ohne Inhalt und überträgt Wert aus Zeile vorher nach Tabelle2
Dim wks1 As Worksheet, wks2 As Worksheet, Spalte As Integer, Zeile As Long
Set wks1 = ActiveWorkbook.Sheets("Tabelle1")
Set wks2 = ActiveWorkbook.Sheets("Tabelle2")
Spalte = 2 ' Spalte die im wks1 durchsucht werden soll
Zeile = 1
Do Until IsEmpty(wks1.Cells(Zeile + 1, Spalte))
Zeile = Zeile + 1
Loop
wks2.Range("A3").Value = wks1.Cells(Zeile, Spalte).Value
End Sub
Sub Makro2()
' Sucht letzten Wert in Spalte und überträgt Wert nach Tabelle2
Dim wks1 As Worksheet, wks2 As Worksheet, Spalte As Integer
Set wks1 = ActiveWorkbook.Sheets("Tabelle1")
Set wks2 = ActiveWorkbook.Sheets("Tabelle2")
Spalte = 2 ' Spalte die im wks1 durchsucht werden soll
wks2.Range("A3").Value = wks1.Cells(65536, Spalte).End(xlUp).Value
End Sub
Makro2 kann man auch zusammenfassen zu
Sub Makro2()
' Sucht letzten Wert in Spalte und überträgt Wert nach Tabelle2
ActiveWorkbook.Sheets("Tabelle2").Range("A3").Value = _
ActiveWorkbook.Sheets("Tabelle1").Cells(65536, 2).End(xlUp).Value
End Sub

mfg
Franz
Anzeige
AW: Wenn Zelle leer, dann Wert darüber
14.06.2006 15:27:50
Matthias
Danke
AW: Geht das auch mit dem vorletzten Wert?
14.06.2006 15:34:46
Matthias
Hallo Franz,
geht das auch mit dem vorletzten Wert?
Danke und Gruß
Matthias
AW: Geht das auch mit dem vorletzten Wert?
14.06.2006 15:47:21
fcs
Hallo Mathias,
mit diesen Anpassung wird der Wert aus der vorletzten Zeile genommen

Sub Makro1()
' Sucht in Spalte erste Zelle ohne Inhalt und überträgt Wert aus 2 Zeilen vorher nach Tabelle2
Dim wks1 As Worksheet, wks2 As Worksheet, Spalte As Integer, Zeile As Long
Set wks1 = ActiveWorkbook.Sheets("Tabelle1")
Set wks2 = ActiveWorkbook.Sheets("Tabelle2")
Spalte = 2 ' Spalte die im wks1 durchsucht werden soll
Zeile = 1
Do Until IsEmpty(wks1.Cells(Zeile + 2, Spalte))
Zeile = Zeile + 1
Loop
wks2.Range("A3").Value = wks1.Cells(Zeile, Spalte).Value
End Sub
Sub Makro2()
' Sucht letzten Wert in Spalte und überträgt vorletzten Wert nach Tabelle2
Dim wks1 As Worksheet, wks2 As Worksheet, Spalte As Integer
Set wks1 = ActiveWorkbook.Sheets("Tabelle1")
Set wks2 = ActiveWorkbook.Sheets("Tabelle2")
Spalte = 2 ' Spalte die im wks1 durchsucht werden soll
wks2.Range("A3").Value = wks1.Cells(65536, Spalte).End(xlUp).Offset(-1,0).Value
End Sub

mfg
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Wenn Zelle leer, dann Wert darüber


Schritt-für-Schritt-Anleitung

Um in Excel den Wert der letzten nicht-leeren Zelle einer Spalte zu übernehmen, wenn die nächste Zelle leer ist, kannst du die folgenden VBA-Makros verwenden. Diese Anleitung setzt voraus, dass du mit Excel 2016 oder höher arbeitest.

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

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge das folgende Makro ein, um den Wert der letzten Zelle zu übernehmen, wenn die nächste leer ist:

    Sub Makro1()
       Dim wks1 As Worksheet, wks2 As Worksheet, Spalte As Integer, Zeile As Long
       Set wks1 = ActiveWorkbook.Sheets("Tabelle1")
       Set wks2 = ActiveWorkbook.Sheets("Tabelle2")
       Spalte = 2 ' Spalte, die im wks1 durchsucht werden soll
       Zeile = 1
       Do Until IsEmpty(wks1.Cells(Zeile + 1, Spalte))
           Zeile = Zeile + 1
       Loop
       wks2.Range("A3").Value = wks1.Cells(Zeile, Spalte).Value
    End Sub
  4. Um den vorletzten Wert zu übernehmen, kannst du das folgende Makro verwenden:

    Sub Makro2()
       Dim wks1 As Worksheet, wks2 As Worksheet, Spalte As Integer
       Set wks1 = ActiveWorkbook.Sheets("Tabelle1")
       Set wks2 = ActiveWorkbook.Sheets("Tabelle2")
       Spalte = 2 ' Spalte, die im wks1 durchsucht werden soll
       wks2.Range("A3").Value = wks1.Cells(65536, Spalte).End(xlUp).Offset(-1, 0).Value
    End Sub
  5. Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: #WERT! in der Zielzelle

    • Lösung: Stelle sicher, dass die Spalte, die du durchsuchst, tatsächlich Werte enthält und keine nicht-numerischen Werte oder Formeln, die zu Fehlern führen können.
  • Fehler: Makro läuft nicht

    • Lösung: Prüfe, ob die Sicherheitseinstellungen für Makros in Excel so konfiguriert sind, dass Makros ausgeführt werden dürfen.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch die WENN-Funktion in Excel nutzen, um ähnliche Ergebnisse zu erzielen.

=WENN(ISTLEER(B2); B1; B2)

Diese Formel prüft, ob die Zelle B2 leer ist. Wenn ja, wird der Wert von B1 zurückgegeben.


Praktische Beispiele

  • Beispiel 1: Nehmen wir an, in Tabelle1 stehen in der Spalte B folgende Werte:

    10
    20
    (leer)
    30

    Mit dem Makro wird in Tabelle2 A3 der Wert 20 eingetragen.

  • Beispiel 2: Bei Verwendung des vorletzten Wertes wird in Tabelle2 A3 der Wert 10 eingetragen.


Tipps für Profis

  • Verwende die OFFSET-Funktion in Kombination mit COUNTA, um dynamisch auf die letzte nicht-leere Zelle zuzugreifen, ohne ein Makro schreiben zu müssen.

  • Achte darauf, deinen Code gut zu kommentieren, wenn du mit VBA arbeitest. Das erleichtert die spätere Wartung und Anpassung.


FAQ: Häufige Fragen

1. Kann ich das Makro für mehrere Spalten verwenden?
Ja, du kannst das Makro anpassen, indem du die Spalte änderst, die du durchsuchen möchtest, und es in einer Schleife für mehrere Spalten laufen lässt.

2. Was passiert, wenn alle Zellen leer sind?
Das Makro gibt in diesem Fall einen Fehler zurück. Du könntest eine zusätzliche Fehlerbehandlung einfügen, um dies zu vermeiden.

3. Kann ich die Lösungen auch ohne VBA umsetzen?
Ja, du kannst Excel-Formeln wie WENN und ISTLEER verwenden, um ähnliche Ergebnisse zu erzielen, allerdings mit gewissen Einschränkungen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige