Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1224to1228
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

Zellen bedingt löschen

Zellen bedingt löschen
Helmut
Hallo zusammen,
ich bin noch ein ziemliches Excel Greenhorn und habe folgende Frage: wie kann ich den Zellen Content löschen in Abhängigkeit vom Inhalt einer Zelle? Zum Beispiel: lösche alle Zelleninhalte in einer Tabelle in denen nicht der Textstring "Erna" vorkommt (es kann auch Einträge wie "Erna Erna" oder "Erna Maria" geben und diese sollen auch als nicht zu löschen gewertet werden). Wenn dies nur über Visual Basic möglich ist, bräuchte ich auch eine kurze Anleitung zur Einbindung einer solchen VBA.
danke im Voraus - Helmut

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

Betreff
Benutzer
Anzeige
AW: Zellen bedingt löschen
21.08.2011 14:01:21
Gerd
Hallo Helmut!
Sub test()
Dim varRetval As Variant
Dim rngZelle As Range
varRetval = Application.InputBox("Wort", "Uebrige loeschen!", Type:=2)
If Len(varRetval) = 0 Or VarType(varRetval) = vbBoolean Then Exit Sub
With ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
For Each rngZelle In .Cells
If Not rngZelle.Text Like "*" & varRetval & "*" Then
rngZelle.ClearContents
End If
Next
End With
End Sub
Guckst Du:
http://www.online-excel.de/excel/singsel_vba.php?f=44
Gruß Gerd
Anzeige
AW: Zellen bedingt Löschen -> Autofilter
21.08.2011 14:28:35
Daniel
Hi
du kannst den Autofilter benutzen.
mit dem Autofilter kannst du Zeilen anhand von bestimmten Bediungungen ausblenden.
Excelaktionen wie: Zeilenlöschen, Inhalte löschen, Werte eingeben, Format änderen werden immer nur auf die sichtbaren Zellen angewendet und nicht auf die ausgeblendeten.
den Autofillter aktivierst du über den Menüpunkt DATEN - FILTERN (ist eine grosse Schaltfläche), dann erscheint über jeder Spalte in der ersten Zeile ein kleiner DropDownButton, wenn du auf diesen klickst, kannst du die Filtereinstellungen in dieser Spalte einstellen.
Komplexere Filterungen wie ENTHÄLT , ENTHÄLT NICHT findest du dann im Menüpunkt "Textfilter" bzw "benutzerdefinierter Filter"
Gruß, Daniel
Anzeige
AW: Zellen bedingt Löschen -> Autofilter
21.08.2011 14:42:29
Gerd
Hi
du kannst den Autofilter benutzen.
Gefiltert wird in Zeilen . Ist halt 'n bisschen Arbeit, für jede Spalte neu anzusetzen. :-)
Gruß Gerd
AW: Zellen bedingt Löschen -> Autofilter
21.08.2011 15:06:29
Daniel
Hi
ja, sowas kommt aber eher selten vor.
meistens stehen doch in unterschiedlichen Spalten auch unterschiedliche Inhalte, so daß man sowieso jede Spalte seperat betrachten muss.
Gruß, Daniel
AW: Zellen bedingt löschen
21.08.2011 15:10:42
Gerd
Hi
wie kann ich den Zellen Content löschen in Abhängigkeit vom Inhalt einer Zelle? 
Falls diese Frage falsch gestellt worden ist, stimme ich zu.
Gruß Gerd
Anzeige
AW: Zellen bedingt löschen
21.08.2011 16:12:14
Helmut
Hallo,
nein, es ist tatsächlich so, dass es in diesen Tabellen horizontal als auch vertikal beliebig viele Einträge gibt, die einen bestimmten identischen Textstring enthalten (Beispiel "Erna"). Bei allen Zellen, die diesen Textstring enthalten, soll der Content erhalten bleiben, bei allen anderen Zellen, die den Textstring nicht enthalten, soll der Content gelöscht werden ohne dass die Struktur der Tabelle verändert wird, d.h., es sollen keine Zellen gelöscht werden. Ich habe auf diese Weise einige Excel Tabellen zu bearbeiten. Die erste hat beispielsweise 34 Spalten und ca. 3000 Zeilen.
Ich werde die erste vorgeschlagene Lösung versuchen, werde mich aber auch mit dem Filtern in den Spalten auseinandersetzen.
Erst mal besten Dank für die Hilfestellung - Helmut
Anzeige
AW: Zellen bedingt löschen
21.08.2011 23:24:35
Helmut
Hallo zusammen,
inzwischen habe ich beide vorgeschlagenen Optionen ausprobiert.
Das Makro von Gerd läuft zwar ohne Fehlermeldung durch, es löscht aber alle Inhalte aller Zellen im selektierten Bereich. Auch die Contents der Zellen, die ich erhalten wollte, die den Text-String "Erna" in meinem Beispiel enthalten. Selbstverständlich habe ich den String "Wort" durch "Erna" vorab ersetzt.
Der zweite Vorschlag zu filtern löscht alle Zeilen, die in der selektierten Spalte den Text-String "Erna" nicht enthalten (und nicht den Content in den Zellen; zumindest habe ich keine Angabe-Möglichkeit dazu gefunden). Diesen Vorschlag kann ich so gar nicht verwenden, weil am Ende nichts in der Tabelle übrig bleibt, wenn ich durch alle Spalten selektiert habe.
Ich vermute, dass der Vorschlag 1 von Gerd zielführend wäre, wenn das Makro richtig arbeitet.
Besten dank im Voraus - Helmut
Anzeige
AW: Zellen bedingt löschen
22.08.2011 00:47:09
Daniel
Hi
der zweite Vorschlag mit dem Filtern löscht überhaupt keine Zeilen, er blendet sie nur aus.
Wenn da Zeilen gelöscht werden, dann deswegen, weil DU das so programmiert hast.
Du musst natürlich nach dem Bearbeiten einer Spalte den Autofilter wieder zurücksetzen und die Zeilen wieder einblenden.
Wenn du mit den gemachten Vorschlägen nicht zurecht kommst, dann versuche vielleicht auch mal diesen hier, allerdings solltest du ihn nur dann vewenden, wenn die Tabelle keine Formlen enthält, sondern nur fixe Werte:
Dim TabName As String
TabName = ActiveSheet.Name
ActiveSheet.Copy after:=ActiveSheet
With ActiveSheet.UsedRange
.FormulaR1C1 = "=if(or('" & TabName & "'!RC="""",Countif('" & TabName & "'!RC,""*Erna*"")=0) _
,"""",'" & TabName & "'!RC)"
.Formula = .Value
Application.DisplayAlerts = False
Sheets(TabName).Delete
Application.DisplayAlerts = True
.Parent.Name = TabName
End With
End Sub

Gruß, Daniel
Anzeige
AW: Zellen bedingt löschen
22.08.2011 12:06:28
Helmut
Hallo Daniel,
vielen Dank für deine Mühe und vor allem auch für deine Geduld. Ich habe dein zweites Bsp. etwas modifiziert und jetzt läuft es, wie es soll:
Sub Test3()
Dim TabName As String
TabName = ActiveSheet.Name
ActiveSheet.Copy after:=ActiveSheet
With ActiveSheet.UsedRange
.FormulaR1C1 = "=if(or('" & TabName & "'!RC="""",Countif('" & TabName & "'!RC,""*Erna*"")=0) _
,"""",'" & TabName & "'!RC)"
.Formula = .Value
Application.DisplayAlerts = False
Sheets(TabName).Delete
Application.DisplayAlerts = True
.Parent.Name = TabName
End With
End Sub
Das ist ja komisch: das was ich aus deinem Bsp. herausgenommen habe, steht jetzt, wenn ich es hier rein kopiere wieder drin: .... RC,""*Erna*"")=0) _
Der String " _" wird wohl wegen dem Zeilenumbruch hinzugefügt.
Besten Dank - Helmut
Anzeige
AW: Zellen bedingt löschen
22.08.2011 17:00:25
Daniel
Hi
ja, das ist ein Fehler hier in der Forumssoftware.
wenn eine Codezeile länger ist, als das Textfenster, dann versucht die Software einen Zeilenumbruch einzufügen, wie der VBA-Editor das das normalerweise erwartet, nämlich "Leerzeichen - Unterstrich - neue Zeile"
nur leider funktioniert das nicht so richtig, denn wenn du den Code aus dem Forum nach VBA kopierst, dann erkennt der VBA-Editor die Zeilenumbrüche nicht und es gibt nen Fehler.
Daher muss man die Zeilenumbrüche manuell wieder entfernen, damit das Makro lauffähig wird.
Gruß, Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige