Hallo zusammen!
Neulich wollte ich in einer Excel-Tabelle mit 24 Spalten alle Zellen löschen, die den Wert #NV (als Ergebnis eines erfolglos suchenden SVERWEISes) oder den Wert 0 enthalten. Nach Beseitigung aller Formeln über "Inhalte einfügen" waren die NVs mit einem einfachen "Alle ersetzen" schnell entfernt.
Etwas Kopfzerbrechen bereiteten mir jedoch die Nullen. Wenn man nämlich "0" mittels "alle ersetzen" auf eine Leerzelle ändert, werden nicht nur alle 0-Werte ersetzt, sondern auch alle Nullen, die sich mittendrin in einer Zahl befinden. Aus 1005 wird dann also 15, und das ist natürlich Unsinn.
Also musst ich Spalte für Spalte einen Filter auf den Wert Null setzen und jede Spalte einzeln löschen.
Wäre das nicht auch einfacher gegangen? Die Tabelle hätte ja genau so gut 500 Spalten haben können...
CU
Olaf
Office - Word, Excel und Co. 9.753 Themen, 41.598 Beiträge
Hallo Olaf,
Du musst bei "Suchen und Ersetzen" die Option "Gesamten Zellinhalt vergleichen" aktivieren:
Gruß, mawe2
Entweder die Lösung von ma-we oder du packst deinen SVERWEIS nächstens in einen =WENN() Vergleich:
=WENN(=SVERWEIS(..)=0;"";=SVERWEIS(..))
Nachteil: du musst halt die SVERWEIS-Formel zweimal schreiben: einmal im Bedingungsteil der =WENN() funktion und einmal in einem der Ergebniszweige.
Du könntest so auch gleich den #NV Fehler abfrühstücken:
=WENN(=SVERWEIS(..)=0;"";WENN(ISTNV(=SVERWEIS(..));"";=SVERWEIS(..)))
Die Formel unterdrückt sowohl eine einzelne 0 als auch #NV - in beiden Fällen enthält die Zelle als Ergebnis den Leerstring "".
Volker
Danke für alle Lösungsansätze!
Die Idee mit der WENN-Bedingung hatte ich auch schon, ist mir aber viel zu riskant - der SVERWEIS müsste dann von Spalte zu Spalte zweimal angepasst werden, und dabei schleichen sich leicht Flüchtigkeitsfehler ein, jedenfalls dann, wenn man es 24x macht...
IT-Loks Idee mit dem Ausblenden ist sicherlich auch ganz gut, ist mir aber insofern nicht ganz geheuer, als die Zellen dann ja nicht wirklich gelöscht werden - sie sehen nur gelöscht aus. In der Praxis ließe sich aber auch dieser Weg gehen.
Bis jetzt gefällt mir mawes Idee am besten.
THX
Olaf
Hallo!
Wie wäre es mit einer VBA-Lösung?
Public Sub LöscheAlleNullen() Dim Zelle As Object For Each Zelle In ActiveSheet.UsedRange If Zelle.Value = "0" Then Zelle.ClearContents Next Zelle End Sub
Gruß, René
Hier eine Anpassung. Damit kannst Du auch gleich das "'#NV" löschen.
Public Sub LöscheAlleNullen() Dim Zelle As Range On Error Resume Next For Each Zelle In ActiveSheet.UsedRange If Zelle.Value = "0" Or Zelle.Text = "#NV" Then Zelle.ClearContents Next Zelle On Error GoTo 0 End Sub
Hallo René,
Hab vielen lieben Dank für deine Hilfsbereitschaft. Sorry für die späte Antwort, komme gerade aus dem Urlaub. Ausprobieren kann ich deine Tipps erst nächste Woche, da ich zuhause nur LibreOffice nutze.
Wahrscheinlich ist Mawes Tipp in der Praxis das Einfachste, zumal der Replace der NVs eine Sache von wenigen Sekunden ist. Trotzdem bin ich immer interessiert daran, dazuzulernen, speziell da ich Visual Basic nur in groben Zügen kenne.
THX
Olaf
Die Idee mit der WENN-Bedingung hatte ich auch schon, ist mir aber viel zu riskant - der SVERWEIS müsste dann von Spalte zu Spalte zweimal angepasst werden, und dabei schleichen sich leicht Flüchtigkeitsfehler einDu könntest eine zusätzliche Spalte einfügen um die Ergebnisse von SVERWEIS entsprechend zu filtern und die Spalte mit SVERWEIS ausblenden...
Moment - da soll ja nichts weggefiltert werden. Die Zeilen bleiben alle stehen, es sollen lediglich alle Zellen "leergemacht" werden, die ein #NV oder eine Null enthalten. Die #NVs lassen sich mit einem einfachen Replace entfernen, die Nullen erst nach Einstellung der entsprechenden Option. Ich werde daher zunächst Mawes Hinweis ausprobieren, ich denke, das sollte es schon gewesen sein. Mumpels VBA-Ansatz werde ich mir aus reiner Neugier natürlich auch anschauen.
THX nochmal an alle!
Olaf