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

Forumthread: Zelleninhalt löschen, wenn Bedingung erfüllt

Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 13:42:40
Isabel
Hallo Zusammen,
ich habe ein kleines Problem und hoffe, dass mir jemand helfen kann. Meine VBA Kenntnisse sind leider noch sehr begrenzt.
Hier findet ihr erstmal meine Besipiel-Datei:
https://www.herber.de/bbs/user/123161.xls
Diese Informationen bekomme ich in etwa so von meiner Datenbank ausgegeben (diese wird dann mithilfe von Markos soweit aufgearbeitet, wie ihr sie jetzt seht).
Im Prinzip ist es nur eine kleine optische Sache, wenn es also nicht klappt, geht die Welt auch nicht unter.
Es geht um Spalte J. Wie man sieht, sind die Zelleninhalte je "Auftrag" gleich. Am besten wäre es, wenn ich nur in der letzten Zeile über dem Rahmen die Information stehen habe.
Ich hatte mir überlegt, dass man es ja einfach von Spalte A abhängig machen kann unter zu Hilfenahme der Leerzeilen.
Quasi: wenn in Spalte A die Zeile x+1 nicht leer ist, dann lösche Zelleninhalt in Spalte J, sonst ignorieren und weiterprüfen bis zum Ende.
Nur hilft mir hierbei der Makro-Recorder logischerweise auch nicht wirklich weiter und nach langem Suchen habe ich auch nichts gefunden, mit dem ich was anfangen könnte.
Ich bedanke mich schonmal im Voraus für alle Hinweise.
mit freundlichen Grüßen
Isabel
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:10:03
Daniel
HI
würde ich so lösen:
1. in einer Hilfsspalte am Tabellenende in Zelle L2 die Formel eintragen und bis zum Ende runter ziehen:
=Wenn(J3="";J2&"";"")
2. diese Formel dann kopieren und in Spalte J als Wert eintragen.
als Makro dann genau das gleiche:

With Range("L2:L" & Cells(Rows.count, 10).end(xlup).row)
.FormulaLocal = "=WENN(J3="""";J2;"""")"
.Copy
.Range("L2").PasteSpecial xlpastevalues
.ClearContents
End with
Gruß Daniel
Anzeige
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:25:00
Isabel
Hallo Daniel,
Danke für den Hinweis. Allerdings schreibt er die Werte in Spalte W? Und sie sollen nicht in der Zeile mit dem Gesamtpreis stehen, sondern eine Zeile darüber.
Gruß
Isabel
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:32:19
Daniel
HI
sorry, Fehler von mir.
mach aus dem .Range("L2") ein Range("J2") (kein Punkt vor dem Range), dann sollte es gehen
Gruß Daniel
Anzeige
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:40:33
Isabel
Hallo,
Vielen, vielen Dank!!! Das funktioniert wunderbar. Du bist echt klasse.
Gruß
Isabel
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:12:35
JoWE
Hallo Isabel,
weiß nicht ob ich Dich richtig verstehe,
wenn Du den Eintrag in Spalte J jeweils nur rechts neben dem Gesamtpreis benötigst, dann vllt. so:
Sub versuch()
Dim a As String
Dim i As Long
ze = Sheets("A_Sammelrechnung").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ze
If Cells(i, 9) = "" Then
a = Cells(i, 10)
Cells(i, 10) = ""
Else
Cells(i, 10).NumberFormat = "@"
Cells(i, 10) = a
End If
Next
End Sub

Gruß
Jochen
Anzeige
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:23:17
Isabel
Hallo Jochen,
vielen Dank, das sieht funktioniert schonmal sehr gut. Eine kleine Sache ist nur, dass der Wert, der stehen bleiben soll nicht neben dem Gesamtpreis sein soll, sondern genau eine Zeile darüber (in Spalte J). (Meine erklärung war wirklich nicht eindeutig).
Bei deinem Lösungsvorschlag sehe ich jetzt leider nicht, wo ich das ändern muss.
Gruß
Isabel
Anzeige
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:47:45
JoWE
aahhh! Dann so:
Sub versuch()
Dim a As String
Dim i As Long
ze = Sheets("A_Sammelrechnung").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ze
If Cells(i, 9) = "" Then
a = Cells(i, 10)
Cells(i, 10) = ""
Else
Cells(i - 1, 10).NumberFormat = "@"
Cells(i - 1, 10) = a
End If
Next
End Sub

Gruß
Jochen
Anzeige
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 14:57:33
Isabel
Hallo,
jaa, danke!! Das funktioniert super!!
Gruß
Isabel
Danke für die Rückmeldung
06.08.2018 15:06:48
JoWE
AW: Zelleninhalt löschen, wenn Bedingung erfüllt
06.08.2018 15:11:24
Daniel
Hi
hier nochmal eine andere Makro-Variante:
Sub test()
Dim AR As Range
For Each AR In Range("J2:J" & Cells(Rows.Count, 10).End(xlUp).Row).SpecialCells( _
xlCellTypeConstants).Areas
If AR.Rows.Count > 1 Then AR.Resize(AR.Rows.Count - 1).ClearContents
Next
End Sub
Gruß Daniel
Anzeige
! Prima Lösung !
06.08.2018 15:16:21
JoWE
Danke für die Rückmeldung!
06.08.2018 15:22:16
Daniel
Gruß Daniel

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zelleninhalt löschen, wenn Bedingung erfüllt


Schritt-für-Schritt-Anleitung

Um den Zelleninhalt in Excel zu löschen, wenn eine bestimmte Bedingung erfüllt ist, kannst Du die folgenden Schritte ausführen:

  1. Hilfsspalte einfügen
    Füge eine Hilfsspalte am Ende Deiner Tabelle hinzu, z.B. in Spalte L.

  2. Formel eingeben
    Trage in der Zelle L2 folgende Formel ein:

    =WENN(J3="";J2;"")

    Ziehe die Formel bis zum Ende der Spalte nach unten.

  3. Werte kopieren
    Kopiere die Ergebnisse aus Spalte L und füge sie als Werte in Spalte J ein.

  4. Inhalt löschen
    Um die Zellen in Spalte J zu leeren, kannst Du ein VBA-Makro verwenden:

    With Range("L2:L" & Cells(Rows.Count, 10).End(xlUp).Row)
       .FormulaLocal = "=WENN(J3="""";J2;"""")"
       .Copy
       .Range("J2").PasteSpecial xlPasteValues
       .ClearContents
    End With

Häufige Fehler und Lösungen

Fehler 1: Die Werte erscheinen in der falschen Spalte.
Lösung: Stelle sicher, dass Du die Range korrekt angibst (Range("J2") statt Range("L2")).

Fehler 2: Das Makro funktioniert nicht.
Lösung: Überprüfe, ob die Makros in Excel aktiviert sind und dass Du die richtige Tabelle bearbeitest.


Alternative Methoden

  • Excel Formel: Du kannst auch die Funktion =WENN() verwenden, um den Zelleninhalt basierend auf Bedingungen zu bearbeiten.
  • VBA ohne Makro: Du kannst auch die Funktion SpecialCells nutzen, um gezielt Zellen zu leeren:
    Sub ClearCells()
      Dim AR As Range
      For Each AR In Range("J2:J" & Cells(Rows.Count, 10).End(xlUp).Row).SpecialCells(xlCellTypeConstants)
          If AR.Rows.Count > 1 Then AR.Resize(AR.Rows.Count - 1).ClearContents
      Next
    End Sub

Praktische Beispiele

Angenommen, Du hast eine Liste von Aufträgen in Excel und möchtest die Zellen in Spalte J leeren, wenn die Zelle in Spalte A nicht leer ist. Du könntest das folgende VBA-Skript verwenden:

Sub ClearContentBasedOnCondition()
    Dim i As Long
    Dim lastRow As Long
    lastRow = Sheets("DeinTabellenblatt").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To lastRow
        If Sheets("DeinTabellenblatt").Cells(i, 1) <> "" Then
            Sheets("DeinTabellenblatt").Cells(i, 10).ClearContents
        End If
    Next i
End Sub

Tipps für Profis

  • Automatisierung: Setze VBA-Makros ein, um regelmäßig Zelleninhalte automatisch zu löschen, wenn Bedingungen erfüllt sind.
  • Datenüberprüfung: Verwende die Datenüberprüfung in Excel, um sicherzustellen, dass nur bestimmte Werte eingegeben werden, was das Löschen vereinfacht.
  • Testen: Teste Deine Formeln und Makros immer in einer Kopie Deiner Datei, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich Zelleninhalte automatisch löschen?
Du kannst VBA-Makros verwenden, um Zelleninhalte basierend auf Bedingungen automatisch zu löschen.

2. Gibt es eine Möglichkeit, dies ohne VBA zu tun?
Ja, Du kannst Formeln wie =WENN() verwenden, um Zelleninhalte basierend auf Bedingungen zu steuern, jedoch nicht direkt löschen.

3. Wie funktioniert die SpecialCells Methode in VBA?
SpecialCells ermöglicht es Dir, nur bestimmte Zellen auszuwählen, z.B. nur die mit konstanten Werten, und diese dann zu bearbeiten oder zu löschen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige