Discussion:
Leere Zelle ist nicht leer
(zu alt für eine Antwort)
BorisX
2004-05-17 10:14:32 UTC
Permalink
Hi Leute,

ich habe folgendes "herausgefunden" und möchte gerne
wissen, warum das so ist:

In A1 steht (als Formel):
=""

Ich kopiere diese Zelle und füge sie an gleicher Stelle
mit 'Inhalte einfügen-Werte' wieder ein.

Somit ist die Zelle optisch leer - auch =LÄNGE(A1) ergibt
Null.
Aber =ANZAHL2(A1) ergibt 1.
Und zwar so lange, bis ich A1 mit 'Del' lösche oder in den
Editiermodus gehe und nur mit Enter bestätige.

Was hat Excel hier also wo und wie gespeichert, dass die
Zelle erst mit den beschriebenen Methoden wirklich 'leer'
wird?
--
Grüße Boris
Frank Kabel
2004-05-17 10:31:35 UTC
Permalink
Hi Boris
seltsame Sachen machst Du da :-)
Excel scheint selbst das intern immer noch als Textwert
abzuspeichern (IsText) ergibt ebenfalls 'WAHR'
Würde das mal als typisches MS Mysterium abtun :-) (aber
als sehr interessantes)
-----Originalnachricht-----
Hi Leute,
ich habe folgendes "herausgefunden" und möchte gerne
=""
Ich kopiere diese Zelle und füge sie an gleicher Stelle
mit 'Inhalte einfügen-Werte' wieder ein.
Somit ist die Zelle optisch leer - auch =LÄNGE(A1) ergibt
Null.
Aber =ANZAHL2(A1) ergibt 1.
Und zwar so lange, bis ich A1 mit 'Del' lösche oder in
den
Editiermodus gehe und nur mit Enter bestätige.
Was hat Excel hier also wo und wie gespeichert, dass die
Zelle erst mit den beschriebenen Methoden wirklich 'leer'
wird?
--
Grüße Boris
.
BorisX
2004-05-17 10:58:15 UTC
Permalink
Hi Frank,
Post by Frank Kabel
seltsame Sachen machst Du da :-)
Ich habe das Problem nur versucht 'auf den Punkt' zu
bringen;-)
In Realo hatte ich einen Listenabgleich getätigt mit nem
SVERWEIS, der zwecks Vermeidung von #NV mit ISTFEHLER
umrandet war. Im ISTFEHLER-Fall hab ich dann also ""
zurückgeben lassen:
=WENN(ISTFEHLER(SVERWEIS(...));"";SVERWEIS(...))

Im Anschluss daran hab ich dann den gesamten Bereich
markiert und an gleicher Stelle die Inhalte wieder
eingefügt.

Und dann stellt ich fest, dass meine TEILERGEBNIS-
Funktionen (mit dem Paramter 3 = ANZAHL2) 'Blödsinn
lieferten' - bis ich dem "Phänomen" dann nach langem hin
und her auf die Schliche kam;-))
Post by Frank Kabel
Excel scheint selbst das intern immer noch als Textwert
abzuspeichern (IsText) ergibt ebenfalls 'WAHR'
Ebenso: =ISTLEER(A1) gibt FALSCH...
Post by Frank Kabel
Würde das mal als typisches MS Mysterium abtun :-) (aber
als sehr interessantes)
Ja - ich denke, da gehört es hin.
Danke für deine Antwort!
--
Grüße Boris
Frank Kabel
2004-05-17 11:09:29 UTC
Permalink
Hi Boris
[...]
Post by BorisX
Post by Frank Kabel
Würde das mal als typisches MS Mysterium abtun :-) (aber
als sehr interessantes)
Ja - ich denke, da gehört es hin.
Danke für deine Antwort!
Würde das Problem mal in die englische NG posten. Da gibt
es doch immer wieder ein paar Spezialisten, die vielleicht
die Ursache (+ Lösung) erklären können :-)

Frank
Melanie Breden
2004-05-17 11:10:30 UTC
Permalink
Hallo Boris,
Post by BorisX
ich habe folgendes "herausgefunden" und möchte gerne
=""
Ich kopiere diese Zelle und füge sie an gleicher Stelle
mit 'Inhalte einfügen-Werte' wieder ein.
Somit ist die Zelle optisch leer - auch =LÄNGE(A1) ergibt
Null.
Aber =ANZAHL2(A1) ergibt 1.
Und zwar so lange, bis ich A1 mit 'Del' lösche oder in den
Editiermodus gehe und nur mit Enter bestätige.
Was hat Excel hier also wo und wie gespeichert, dass die
Zelle erst mit den beschriebenen Methoden wirklich 'leer'
wird?
Ein Auszug aus der OH sagt dazu ganz eindeutig:
Anzahl2:
"Ein Wert ist in diesem Fall jede beliebige Art von Information,
auch leerer Text (""), nicht jedoch leere Zellen. "

Mit ISTLEER() erzielst du ein ähnliches Ergebnis:
"Wert bezieht sich auf eine leere Zelle."

Ich habe das Ganze mal von der VBA Seite betrachtet:
A1 =""
A2 Wert aus A1 eingefügt (Inhalte einfügen->Werte)
A3 jungfäuliche Zelle

Dazu folgende Prozedur:

Sub Test ()
Dim A1, A2, A3

A1 = Range("A1").Value
A2 = Range("A2").Value
A3 = Range("A3").Value
Stop
End Sub

Ziehe die drei Variablen in das Überwachungsfenster und starte die Prozedur.
Dort kannst du die Werte und die von Excel zugewiesenen Datentyp ablesen.
Einzig A3 enthält *keinen* Wert.

Als Resume daraus ziehe ich:
Ein String ist ein String, egal ob er leer ist oder nicht.
Wenn ein Leerstring in einer Zelle ist, ist die Zelle nicht_leer!
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
BorisX
2004-05-17 12:22:53 UTC
Permalink
Hi Melanie,
Post by Melanie Breden
"Ein Wert ist in diesem Fall jede beliebige Art von
Information,
Post by Melanie Breden
auch leerer Text (""), nicht jedoch leere Zellen. "
"Wert bezieht sich auf eine leere Zelle."
A1 =""
A2 Wert aus A1 eingefügt (Inhalte einfügen->Werte)
A3 jungfäuliche Zelle
Sub Test ()
Dim A1, A2, A3
A1 = Range("A1").Value
A2 = Range("A2").Value
A3 = Range("A3").Value
Stop
End Sub
Ziehe die drei Variablen in das Überwachungsfenster und
starte die Prozedur.
Post by Melanie Breden
Dort kannst du die Werte und die von Excel zugewiesenen
Datentyp ablesen.
Post by Melanie Breden
Einzig A3 enthält *keinen* Wert.
Ein String ist ein String, egal ob er leer ist oder nicht.
Wenn ein Leerstring in einer Zelle ist, ist die Zelle
nicht_leer!

Danke Dir für Deine ausführliche Erläuterung!
Es bleibt für mich jedoch die Frage, wie Excel denn einen
Leerstring intern behandelt? Wo wird also die Information
gespeichert, dass die Zelle einen Leerstring beinhaltet?
Und warum "verschwindet" dieser, sobald ich die Zelle
editiere und mit Enter bestätige?
'Denkt' Excel hier in gewisser Weise mit?
--
Grüße Boris
Post by Melanie Breden
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
.
Melanie Breden
2004-05-17 13:50:04 UTC
Permalink
Hallo Boris,
Post by BorisX
Post by Melanie Breden
Ein String ist ein String, egal ob er leer ist oder nicht.
Wenn ein Leerstring in einer Zelle ist, ist die Zelle nicht_leer!
Danke Dir für Deine ausführliche Erläuterung!
Es bleibt für mich jedoch die Frage, wie Excel denn einen
Leerstring intern behandelt?
durch den Leerstring erhält die Zelle automatisch das Text-Format.

Angenommen, A2 enthält einen Null-Zeichenfolge ("").
Versuch mal die folgenden Formel:
=A2+5
=A2&5
=A2&5&7
=A2&5*3

Im letzten Fall rechnet Excel zwar richtig, das Ergebnis ist aber
immer noch als Text definiert und wird linksbündig angezeigt.

Der Leerstring kann nur durch Kopieren eines Leerstrings aus
Formelergebnissen, oder anderen Zellen mit Leerstrings in
Zellen eingefügt werden. Eine direkte Zuweisung einer
Null-Zeichenfolge als Zeichenkette ist IMO mit VBA nicht möglich.

Andersrum ist es auch möglich, *leere* Zellen zu kopieren und diesen Wert
in Zellen einzufügen. So werden aus allen Leerstringzellen wieder
leere Zellen.
Post by BorisX
Wo wird also die Information
gespeichert, dass die Zelle einen Leerstring beinhaltet?
Die Information über den Zellenwert wird wie bei allen anderen Zellen
intern gespeichert. Die Zelle enthält ja nachweislich einen Wert.
Dieser besteht halt aus der Zeichenkette "".
=A2 -> F9 ->""
Die Null-Zeichenfolge ist als festes (nicht sichtbares) Zeichen,
ähnlich dem Hochkomma, zu betrachten.
Post by BorisX
Und warum "verschwindet" dieser, sobald ich die Zelle
editiere und mit Enter bestätige?
'Denkt' Excel hier in gewisser Weise mit?
Beim Löschen des Leerstrings durch editieren der Zelle
zeigt der Makrorekorder, dass der Wert "" zugewiesen wird:

ActiveCell.FormulaR1C1 = ""

Für mich wird damit bestätigt, dass Excel einen Unterschied macht, ob einer
Zelle ein Leerstring als Wert zugewiesen wird, oder der Leerstring durch
kopieren eines Leerstrings als Zeichenkette eingefügt wird.

Insgesamt finde ich es wieder sehr interessant in die tiefsten Untergründe
von Excel zu schauen ;-)
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
BorisX
2004-05-17 14:43:22 UTC
Permalink
Hi Melanie,

nur schnell vorab: Ich hab jetzt leider nicht die Zeit,
das alles ausgiebig zu testen - aber ich melde mich heute
Abend wieder!
Danke erstmal für deine gestochen scharfe Analyse!
--
Grüße Boris
-----Originalnachricht-----
Hallo Boris,
Post by BorisX
Post by Melanie Breden
Ein String ist ein String, egal ob er leer ist oder
nicht.
Post by BorisX
Post by Melanie Breden
Wenn ein Leerstring in einer Zelle ist, ist die Zelle
nicht_leer!
Post by BorisX
Danke Dir für Deine ausführliche Erläuterung!
Es bleibt für mich jedoch die Frage, wie Excel denn
einen
Post by BorisX
Leerstring intern behandelt?
durch den Leerstring erhält die Zelle automatisch das
Text-Format.
Angenommen, A2 enthält einen Null-Zeichenfolge ("").
=A2+5
=A2&5
=A2&5&7
=A2&5*3
Im letzten Fall rechnet Excel zwar richtig, das Ergebnis
ist aber
immer noch als Text definiert und wird linksbündig
angezeigt.
Der Leerstring kann nur durch Kopieren eines Leerstrings
aus
Formelergebnissen, oder anderen Zellen mit Leerstrings in
Zellen eingefügt werden. Eine direkte Zuweisung einer
Null-Zeichenfolge als Zeichenkette ist IMO mit VBA nicht
möglich.
Andersrum ist es auch möglich, *leere* Zellen zu kopieren
und diesen Wert
in Zellen einzufügen. So werden aus allen
Leerstringzellen wieder
leere Zellen.
Post by BorisX
Wo wird also die Information
gespeichert, dass die Zelle einen Leerstring beinhaltet?
Die Information über den Zellenwert wird wie bei allen
anderen Zellen
intern gespeichert. Die Zelle enthält ja nachweislich
einen Wert.
Dieser besteht halt aus der Zeichenkette "".
=A2 -> F9 ->""
Die Null-Zeichenfolge ist als festes (nicht sichtbares)
Zeichen,
ähnlich dem Hochkomma, zu betrachten.
Post by BorisX
Und warum "verschwindet" dieser, sobald ich die Zelle
editiere und mit Enter bestätige?
'Denkt' Excel hier in gewisser Weise mit?
Beim Löschen des Leerstrings durch editieren der Zelle
ActiveCell.FormulaR1C1 = ""
Für mich wird damit bestätigt, dass Excel einen
Unterschied macht, ob einer
Zelle ein Leerstring als Wert zugewiesen wird, oder der
Leerstring durch
kopieren eines Leerstrings als Zeichenkette eingefügt
wird.
Insgesamt finde ich es wieder sehr interessant in die
tiefsten Untergründe
von Excel zu schauen ;-)
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
.
BorisX
2004-05-19 21:21:29 UTC
Permalink
Hi Melanie
[Duchweg höchst kompetente Zeilen!]

Zunächst mal möchte ich Abbitte leisten, dass ich mich
jetzt erst wieder melde....:-p

Habe alles getestet - und stimme Dir im Ergebnis 1:1 zu.

Toll, wie du Dich mit den "Innereien" von Excel
beschäftigst - und gleichermaßen freut es mich, dass es
dir auch Spaß macht :-))

Ganz herzlichen Dank für deine akribischen, kompetenten
und vor allen Dingen nachvollziehbaren Ausführungen!
Bis die Tage!
--
Grüße Boris
Lesen Sie weiter auf narkive:
Loading...