Ich muss eine leere Zelle aus einer Excel-Formel zurückgeben, aber es scheint, dass Excel eine leere Zeichenfolge oder einen Verweis auf eine leere Zelle anders behandelt als eine echte leere Zelle. Also im Grunde brauche ich so etwas
=IF(some_condition,EMPTY(),some_value)
Ich habe versucht, Dinge wie zu tun
=IF(some_condition,"",some_value)
und
=IF(some_condition,,some_value)
und unter der Annahme, dass B1 eine leere Zelle ist
=IF(some_condition,B1,some_value)
Aber keine davon scheint echte leere Zellen zu sein, ich vermute, weil sie das Ergebnis einer Formel sind. Gibt es eine Möglichkeit, eine Zelle genau dann zu füllen, wenn eine Bedingung erfüllt ist, und die Zelle ansonsten wirklich leer zu halten?
BEARBEITEN: Wie empfohlen habe ich versucht, NA () zurückzugeben, aber für meine Zwecke hat dies auch nicht funktioniert. Gibt es eine Möglichkeit, dies mit VB zu tun?
BEARBEITEN: Ich erstelle ein Arbeitsblatt, das Daten aus anderen Arbeitsblättern abruft, die für die sehr spezifischen Anforderungen einer Anwendung formatiert sind, die die Daten in eine Datenbank importiert. Ich habe keinen Zugriff, um die Implementierung dieser Anwendung zu ändern, und es schlägt fehl, wenn der Wert "" ist, anstatt tatsächlich leer zu sein.
quelle
Antworten:
Sie müssen
VBA
dann verwenden. Sie durchlaufen die Zellen in Ihrem Bereich, testen die Bedingung und löschen den Inhalt, wenn sie übereinstimmen.Etwas wie:
quelle
VbNullString
Excel hat keine Möglichkeit, dies zu tun.
Das Ergebnis einer Formel in einer Zelle in Excel muss eine Zahl, ein Text, eine logische (boolesche) oder ein Fehler sein. Es gibt keinen Formelzellenwerttyp "leer" oder "leer".
Eine Praxis, die ich gesehen habe, ist die Verwendung von NA () und ISNA (), aber das kann Ihr Problem möglicherweise wirklich lösen oder nicht, da es große Unterschiede in der Art und Weise gibt, wie NA () von anderen Funktionen behandelt wird (SUM (NA () )) ist # N / A, während SUM (A1) 0 ist, wenn A1 leer ist).
quelle
Ja, es ist möglich.
Es ist möglich, dass eine Vernichtungsformel zu trueblank ausgewertet wird, wenn die Bedingung erfüllt ist. Es besteht den Test der
ISBLANK
Formel.Sie müssen
GetTrueBlank
lediglich einen benannten Bereich einrichten , und Sie können das folgende Muster wie in Ihrer Frage verwenden:Schritt 1. Fügen Sie diesen Code in das Modul von VBA ein.
Schritt 2. Fügen Sie
Sheet1
in derA1
Zelle einen benannten BereichGetTrueBlank
mit der folgenden Formel hinzu:Das ist es. Es gibt keine weiteren Schritte. Verwenden Sie einfach eine selbstvernichtende Formel. Geben Sie in die Zelle beispielsweise
B2
die folgende Formel ein:Die obige Formel in
B2
wird als trueblank ausgewertet, wenn Sie 0 in eingebenA2
.Hier können Sie eine Demonstrationsdatei herunterladen .
Im obigen Beispiel führt die Auswertung der Formel zu trueblank zu einer leeren Zelle. Das Prüfen des Ergebnisses mit der
ISBLANK
Formel führt positiv zu WAHR. Dies ist eine Hara-Kiri-ähnliche Formel. Die Formel verschwindet aus der Zelle, wenn die Bedingung erfüllt ist. Das Ziel ist erreicht, obwohl Sie wahrscheinlich möchten, dass die Formel nicht verschwindet.Sie können die Formel so ändern, dass das Ergebnis in der benachbarten Zelle zurückgegeben wird, sodass sich die Formel nicht selbst tötet. Sehen Sie, wie Sie das UDF-Ergebnis in einer benachbarten Zelle erhalten .
Ich bin auf die Beispiele gestoßen, wie The FrankensTeam hier ein Trueblank als Formelergebnis erhalten hat: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- Zelle
quelle
Vielleicht betrügt das, aber es funktioniert!
Ich brauchte auch eine Tabelle, die die Quelle für ein Diagramm ist, und ich wollte nicht, dass leere oder Nullzellen einen Punkt im Diagramm erzeugen. Es ist richtig, dass Sie die Diagrammeigenschaft festlegen, Daten, versteckte und leere Zellen auswählen müssen, um "leere Zellen als Lücken anzuzeigen" (klicken Sie auf das Optionsfeld). Das ist der erste Schritt.
Fügen Sie dann in den Zellen, die möglicherweise zu einem Ergebnis führen, das Sie nicht zeichnen möchten, die Formel in eine IF-Anweisung mit einem
NA()
Ergebnis wie z=IF($A8>TODAY(),NA(), *formula to be plotted*)
Dies ergibt das erforderliche Diagramm ohne Punkte, wenn ein ungültiger Zellenwert auftritt. Dies lässt natürlich alle Zellen mit diesem ungültigen Wert zum Lesen
#N/A
übrig, und das ist chaotisch.Um dies zu bereinigen, wählen Sie die Zelle aus, die möglicherweise den ungültigen Wert enthält, und wählen Sie dann bedingte Formatierung - neue Regel. Wählen Sie "Nur Zellen formatieren, die enthalten" und wählen Sie unter der Regelbeschreibung "Fehler" aus dem Dropdown-Feld aus. Wählen Sie dann unter Format Schriftart - Farbe - Weiß (oder was auch immer Ihre Hintergrundfarbe ist). Klicken Sie auf die verschiedenen Schaltflächen, um herauszukommen, und Sie sollten sehen, dass Zellen mit ungültigen Daten leer aussehen (sie enthalten tatsächlich,
#N/A
aber weißer Text auf weißem Hintergrund sieht leer aus.) Dann zeigt das verknüpfte Diagramm auch nicht die ungültigen Wertpunkte an.quelle
So habe ich es für den Datensatz gemacht, den ich verwendet habe. Es scheint verworren und dumm zu sein, aber es war die einzige Alternative zum Erlernen der Verwendung der oben genannten VB-Lösung.
q
da er nirgendwo auf meinem Datenblatt war.q
nichts ersetzt.Dieser dreistufige Prozess verwandelte alle "leeren" Zellen in "leere" Zellen. Ich habe versucht, die Schritte 2 und 3 zusammenzuführen, indem ich einfach die leere Zelle durch eine leere Zelle ersetzte, aber das funktionierte nicht - ich musste die ersetzen leere Zelle mit einer Art tatsächlichem Text, dann ersetzen Sie diesen Text durch eine leere Zelle.
quelle
Wenn das Ziel darin besteht, eine Zelle als leer anzuzeigen, wenn sie tatsächlich den Wert Null hat, dann verwenden Sie stattdessen eine Formel, die zu einer leeren oder leeren Zelle führt (da keine
empty()
Funktion vorhanden ist).Wenn Sie eine leere Zelle möchten, geben Sie ein
0
statt""
und dann zurückStellen Sie das Zahlenformat für die Zellen so ein, dass Sie das finden müssen, was Sie für positive und negative Zahlen wollen (die ersten beiden Elemente, die durch Semikolons getrennt sind). In meinem Fall waren die Zahlen 0, 1, 2 ... und ich wollte, dass 0 leer angezeigt wird. (Ich habe nie herausgefunden, wofür der Textparameter verwendet wurde, aber es schien erforderlich zu sein).
quelle
Versuchen Sie, die Zelle mit zu bewerten
LEN
. Wenn es eine Formel enthält,LEN
wird zurückgegeben0
. Wenn es Text enthält, wird größer als zurückgegeben0
.quelle
""
oder ist leer.LEN(cell)>0
Gibt true zurück, wenn eine Zahl vorhanden ist (einschließlich Null, einschließlich, wenn die Zahl durch eine Formel berechnet wird), und false, wenn die Zeichenfolge leer oder leer ist.Wow, eine erstaunliche Anzahl von Menschen hat die Frage falsch verstanden. Es ist einfach, eine Zelle leer aussehen zu lassen . Das Problem ist, dass Excel-Formeln, wenn die Zelle leer sein muss, nicht "kein Wert" zurückgeben können, sondern nur einen Wert. Die Rückgabe einer Null, eines Leerzeichens oder sogar "" ist ein Wert.
Sie müssen also einen "magischen Wert" zurückgeben und ihn dann durch Suchen und Ersetzen oder mithilfe eines VBA-Skripts durch keinen Wert ersetzen. Während Sie ein Leerzeichen oder "" verwenden könnten, wäre mein Rat, einen offensichtlichen Wert wie "NODATE" oder "NONUMBER" oder "XXXXX" zu verwenden, damit Sie leicht erkennen können, wo es auftritt - es ist ziemlich schwer zu finden "" in einer Tabelle.
quelle
Verwenden Sie
COUNTBLANK(B1)>0
stattISBLANK(B1)
in IhrerIF
Aussage.Im Gegensatz zu
ISBLANK()
,COUNTBLANK()
hält""
als leer und gibt 1 zurück.quelle
So viele Antworten, die einen Wert zurückgeben, der leer aussieht, aber nicht wie angefordert als Zelle leer ist ...
Wie gewünscht, wenn Sie tatsächlich eine Formel wünschen, die eine leere Zelle zurückgibt. Es ist über VBA möglich. Hier ist der Code, um genau das zu tun. Schreiben Sie zunächst eine Formel, um den Fehler # N / A überall dort zurückzugeben, wo die Zellen leer sein sollen. Dann löscht meine Lösung automatisch alle Zellen, die diesen # N / A-Fehler enthalten. Natürlich können Sie den Code so ändern, dass der Inhalt von Zellen automatisch gelöscht wird, je nachdem, was Sie möchten.
Öffnen Sie den "Visual Basic Viewer" (Alt + F11). Suchen Sie die gewünschte Arbeitsmappe im Projektexplorer und doppelklicken Sie darauf (oder klicken Sie mit der rechten Maustaste und wählen Sie den Ansichtscode aus). Dies öffnet das Fenster "Code anzeigen". Wählen Sie "Arbeitsmappe" im Dropdown-Menü (Allgemein) und "SheetCalculate" im Dropdown-Menü (Deklarationen).
Fügen Sie den folgenden Code (basierend auf der Antwort von JT Grimes) in die Funktion Workbook_SheetCalculate ein
Speichern Sie Ihre Datei als makrofähige Arbeitsmappe
NB: Dieser Prozess ist wie ein Skalpell. Es wird der gesamte Inhalt aller Zellen entfernt, die den Fehler # N / A auswerten. Sie werden gehen und Sie können sie nicht zurückbekommen, ohne die Formel erneut einzugeben, die sie früher enthielten.
NB2: Natürlich müssen Sie Makros aktivieren, wenn Sie die Datei öffnen, sonst funktioniert es nicht und # N / A-Fehler bleiben ungelöst
quelle
Diese Antwort befasst sich nicht vollständig mit dem OP, aber es gab mehrere Male, bei denen ich ein ähnliches Problem hatte und nach der Antwort gesucht habe.
Wenn Siedie Formel oder die Daten bei Bedarf neu erstellen können(und aus Ihrer Beschreibung geht hervor, dass dies möglich ist),können Sie die Region und auswählen, wenn Sie bereit sind, den Teil auszuführen, für den die leeren Zellen tatsächlich leer sein müssen Führen Sie das folgende vba-Makro aus.
Dadurch wird der Inhalt einer Zelle gelöscht, die gerade angezeigt wird
""
oder nur eine Formel enthältquelle
Was ich benutzt habe, war ein kleiner Hack. Ich habe T (1) verwendet, das eine leere Zelle zurückgab. T ist eine Funktion in Excel, die ihr Argument zurückgibt, wenn es sich um eine Zeichenfolge und ansonsten um eine leere Zelle handelt. Sie können also Folgendes tun:
quelle
Ich habe die folgenden Schritte verwendet, um mein Excel sauberer aussehen zu lassen:
Wenn Sie Berechnungen durchführen, gibt "" einen Fehler aus, sodass Sie ihn als Zahl behandeln möchten. Daher habe ich eine verschachtelte if-Anweisung verwendet, um 0 anstelle von "" zurückzugeben. Wenn das Ergebnis 0 ist, gibt diese Gleichung "" zurück.
Auf diese Weise sieht das Excel-Blatt sauber aus ...
quelle
Wenn Sie Suchfunktionen wie HLOOKUP und VLOOKUP verwenden, um die Daten in Ihr Arbeitsblatt zu bringen, setzen Sie die Funktion in Klammern und die Funktion gibt eine leere Zelle anstelle einer {0} zurück. Beispielsweise,
Dies gibt einen Nullwert zurück, wenn die Suchzelle leer ist:
Dies gibt eine leere Zelle zurück, wenn die Suchzelle leer ist:
Ich weiß nicht, ob dies mit anderen Funktionen funktioniert ... Ich habe es nicht versucht. Ich verwende Excel 2007, um dies zu erreichen.
Bearbeiten
Damit eine IF (A1 = "" ,,) tatsächlich als wahr zurückkehrt, müssen zwei Suchvorgänge in derselben Zelle durch ein & getrennt sein. Der einfache Weg, dies zu umgehen, besteht darin, die zweite Suche zu einer Zelle zu machen, die sich am Ende der Zeile befindet und immer leer ist.
quelle
Nun, bis jetzt ist dies das Beste, was ich mir vorstellen kann.
Mit dieser
ISBLANK
Funktion wird überprüft, ob die Zelle in einerIF
Anweisung wirklich leer ist . Wenn sich in der Zelle etwas befindet,A1
in diesem Beispiel sogar ein Leerzeichen,ist dies in der Zelle nicht
EMPTY
der Fall und die Berechnung wird durchgeführt. Dadurch werden die Berechnungsfehler so lange nicht angezeigt, bis Sie mit Zahlen arbeiten können.Wenn dies der Fall ist, zeigt
EMPTY
die Berechnungszelle die Fehler aus der Berechnung nicht an. Wenn dies derNOT EMPTY
Fall ist, werden die Berechnungsergebnisse angezeigt. Dies wird einen Fehler auslösen, wenn Ihre Daten schlecht sind, die gefürchtet#DIV/0
!Ändern Sie die Zellreferenzen und die Formel nach Bedarf.
quelle
Die Antwort ist positiv - Sie können die Funktion = IF () nicht verwenden und die Zelle leer lassen. "Sieht leer aus" ist nicht dasselbe wie leer. Es ist eine Schande, dass zwei Anführungszeichen hintereinander keine leere Zelle ergeben, ohne die Formel zu löschen.
quelle
Google hat mich mit einem sehr ähnlichen Problem hierher gebracht. Ich habe endlich eine Lösung gefunden, die meinen Anforderungen entspricht. Es könnte auch jemand anderem helfen ...
Ich habe diese Formel verwendet:
quelle