Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1532to1536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

wenn dann

wenn dann
03.01.2017 14:37:16
Katjuscha
Hallo,
ich habe ein Problem mit einer Excel-Tabelle.
Ich möchte prüfen ob in N7 ein Datum steht das größer ist als 31.12.2015 und ob O7 nicht leer ist dann soll der Zellinhalt von S7 bis AO7 gelöscht werden.
Das ganze soll für die Zeilen 7 bis 1500 geprüft und durchgeführt werden.
=Wenn(N7>2015;S7:AO7="") klappt nicht.
Habt ihr ne Idee?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn dann
03.01.2017 14:47:14
Anton
Hallo Katjuscha,
eine Beispielmappe wäre nicht schlecht. Spontan hätte ich folgenden Vorschlag:
=WENN(UND(N7>DATUM(2015;12;31);AO7="");"";"UND Kriterium falsch")
VG Anton
AW: wenn dann
03.01.2017 15:52:54
Katjuscha
Hallo Anton,
danke für deine schnelle Antwort. Leider klappt auch das nicht.
1. Datum ist der 10.01.2016 und ausgegeben wird false
2. O7 soll nicht leer sein das habe ich durch NICHT ergänzt
3. möchte ich den Inhalt von S7 bis AO7 dann löschen bzw. durch nichts ersetzen
aber trotzdem Danke.
LG Katjuscha
AW: mit einer Formel kann man nicht löschen ...
03.01.2017 14:52:04
...
Hallo,
... ganz davon abgesehen, dass Deine Formel völlig falsch ist.
Eine Lösung ganz ohne VBA z.B. so:
Filtere die Spalte N ab Zeile 7 nach Datum größer 31.12.2015 und dann zusätzlich nach Spalte O alle nicht leeren Zellen. Anschließend markiere die Zellen Spalte S:AO7 und lösche diese.
Gruß Werner
.. , - ...
Anzeige
AW: mit einer Formel kann man nicht löschen ...
03.01.2017 15:58:18
Katjuscha
Hallo Werner,
wenn die Formel geklappt hätte, wäre ich wohl kaum hier.
Die Variante die du vorschlägst ist wieder manuell. Und ich hoffte das kann ich umgehen und schneller erledigen.
Wie wäre denn die Lösung mit VBA?
Gruß Katjuscha
AW: eine VBA-Lösung wird nun gesucht owT
03.01.2017 15:59:53
...
Gruß Werner
.. , - ...
AW: mit einer Formel kann man nicht löschen ...
03.01.2017 16:18:02
Daniel
Hi
im Prinzip genauso, wie du sie von Hand machst:
1.Autofilter setzen und in den entspreichenden Spalten filtern
2. in der gefilterten Tabelle die Zeilen löschen.
per VBA führst du genau die gleichen Schritte aus.
der Makrorecorder hilft dir dabei, die Manuellen Schritte in VBA umzusetzen.
Sub Bereinigen()
With Range("N6:O1500")
.Autofilter Field:=1, Criteria1:=">12/31/2015"
.Autofilter Field:=2, Criteria1:=""
Range("S7:AO1500").ClearContents
.Autofilter
End With
End Sub
ein bisschen musst du aufpassen, beim Filtern nach Datum zeichnet der Recorder wahrscheinlich die deutsche Datumsschreibweise auf. In VBA benötigtst du jedoch unabhänigig von der Länderversion immer die amerikanische Schreibweise.
Gruß Daniel
Anzeige
AW: mit einer Formel kann man nicht löschen ...
04.01.2017 11:36:48
Katjuscha
Hallo Daniel,
leider klappt dein Makro nicht, es werden alle Zellen von S7 bis AO1500 gelöscht.
ich glaube es liegt an der Definition von Feld 1 und 2.
Ich habe es auch mal mit dem Recorder versucht, aber bei mir wird nichts aufgezeichnet.
Also habe ich es mal alleine versucht:
sub Bereinigen2()
zeile = 7
Do
If Range(zeile, "N").Value > 31/12/2015 AND Range(zeile, "O").Value = "*" Then
Range(Cells(zeile, "S"), Cells(zeile, "AO")).ClearContents
End If
Z = Z + 1
Loop Until zeile = 500
End Sub
Klappt aber auch nicht.
Es kommt immer die Fehlermeldung: Laufzeitfehler 1004,Anwendungs- oder objektdefinierter Fehler.
Damit komme ich aber auch nicht weiter.
Danke für deine Hilfe.
Gruß Katjuscha
Anzeige
AW: mit einer Formel kann man nicht löschen ...
04.01.2017 11:58:54
Daniel
Hi Katjuscha
Ohne die Datei zu kennen ist es einfach schwierig, ein funktionsfähiges Makro zu schreiben.
Nur so als Tipp:
Der Vergleich mit = kennt keine Jokerzeichen. Um festzustellen, in eine Zelle einen Inhalt hat, musst du so prüfen:
Cells(Zeile, "O").Value  ""
Auch deinen Datumswert musst du im Code etwas anders angeben:
Cells(Zeile, "N").value > DateSerial(2015, 12, 31)
Gruß Daniel
AW: Notationsvariante
04.01.2017 12:59:27
Gerd
Hallo Katja!
Im Sinne von lauffähig, nicht optimiert.
Sub Bereinigen4()
Dim zeile As Long
Do
If Range("N" & zeile).Value > #12/31/2015# And Range("O" & zeile).Value  "" Then
Range(Cells(zeile, "S"), Cells(zeile, "AO")).ClearContents
MsgBox zeile
End If
zeile = zeile + 1
Loop Until zeile = 500
End Sub
Gruß Gerd
Anzeige
wenn dann
05.01.2017 08:44:59
Katjuscha
Hallo Daniel, Hallo Gerd,
vielen Dank für eure Hilfe.
Hier ist mein fertiges Makro. Es läuft und macht was es soll.
Sub Liste_Bereinigen()
Dim zeile As Long
zeile = 7
Cells(7, "N").Select
Do
If Cells(zeile, "N").Value > DateSerial(2015, 12, 31) And _
Cells(zeile, "N").Value  "----------" And _
Cells(zeile, "O").Value  "" And _
Cells(zeile, "O").Value  "----------" And _
Cells(zeile, "S").Value  "gelöscht" Then
Range(Cells(zeile, "S"), Cells(zeile, "AO")).Clear
Cells(zeile, "S").Value = "gelöscht"
Cells(zeile, "N").Select
MsgBox zeile
End If
zeile = zeile + 1
Loop Until zeile = 1500
MsgBox "Bereinigt !!!"
End Sub
Gruß Katjuscha
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige