Unterschiedliche Ergebnisse bei der Funktion Anzahl2()

Guten Tag Listlinge,

in einer Datei habe ich zwei verschiedene Ergebnisse bei der Anwendung der Funktion ANZAHL2().

In der Tabelle Eingabe führt die Verwendung von ANZAHL2() bei Bereichen mit Formeln zu unerwarteten Ergebnissen. Unabhängig davon, ob ich die Bereiche als Bereiche oder mit Bereichsnamen an ANZAHL2() übergebe. Deshalb habe ich das versucht, in einer zweiten Tabelle mit dem Namen Zählen Test zu überprüfen. Dort arbeitet ANZAHL2() aber wie erwartet.

Der Fehler liegt wahrscheinlich dort, wo ich ihn nie vermuten würde.

Mit lieben Grüßen

josinoro

Serienbriefdaten 01 Anzahlproblem.ods (69,5 KB)

Hallo
nimm:

=ZÄHLENWENN(_Name;".+")

und schalte ggf. →Extras→Optionen→LO-calc→Berechnen→→ [x]reguläre Ausdrücke in formeln erlauben

Hallo @karolus,

vielen Dank für deinen Lösungsvorschlag. Das werde ich ausprobieren.

Du hast zwei verschiedene Ergebnisse von ANZAHL2() weil die Daten unterschiedlich sind. In _Name (Eingabe) hat jede Zelle ein Resultat der Formel, auch wenn sie einen Leerstring zurück gibt. ANZAHL2(), im Englischen COUNTA() für Count All, zählt alles was nicht echte Leerzelle ist. => 20.
In _Name (Zählen Test) sind echte leere Zellen => 15.

ANZAHLLEEREZELLEN(), im Englischen COUNTBLANK() also nicht wirklich korrekt übersetzt (aber auch in Excel schon so gewesen), zählt paradoxerweise auch Leerstrings von Formelresultaten aber ermöglicht somit halt auch so ein Konstrukt wie in deiner Eingabe.E33 Zelle. Die Hilfe ist da leider unvollständig (am besten einen Bug gegen die Komponente Documentation aufmachen), aber im ODF OpenFormula (ODFF) Standard ist das explizit erwähnt, auch auf der Excel Support-Seite..

Hallo @erAck,

auch dir herzlichen Dank für deine Antwort.

Ich erkenne nicht, wo die Daten unterschiedlich sind, weil ich, meiner Meinung nach, mit den Funktionen:

=WENN(D9="";"";VERKETTEN(Mieter!E12;" “;Mieter!F12)) in der Tabelle Eingabe (E9) und mit
=WENN(C12=”";"";VERKETTEN("–";C12;"–")) in der Tabelle Zählen Test (F12)

doch beide Male einen Leerstring erzeuge, der eben dann einmal mitgezählt wird und einmal nicht.

Eine Formel kann nicht nichts zurückgeben. "" ist ein Textwert der Länge 0. Dies ist einer von 97 Gründen, Tabellenkalkulationen nicht als Datenbanken zu missbrauchen.

Alle Zellen in in _Name (Eingabe) enthalten etwas, nämlich die Formel, egal was sie zurückgibt. Deswegen liefert =COUNTA(_Name) dort 20.
Der Bereich _Name (Zählen Test) (C12:C31) enthält keine Formeln aber Leerzellen. Deswegen liefert =COUNTA(_Name) dort 15.
Der Bereich 'Zählen Test'.F12:F31 enthält zwar Formeln, die auch Leerstrings zurückgeben, wird aber von der Formel in F34 gar nicht ausgewertet, die stattdessen auch auf den Bereich _Name (Zählen Test) mit den Leerzellen zugreift =COUNTA(_Name)-COUNTBLANK(_Name) also 15-5 => 10 errechnet.


Und bitte benutze nicht den Antwort Button hier wenn es keine Antwort/Lösung der Originalfrage ist, stattdessen die Kommentar-Sprechblase, danke.

Hallo @erAck,

deine Erklärung bezüglich der Rückgabewerte leuchten mir ein.

Ich habe aber doch in beiden Tabellen mit den Funktionen:

=WENN(D9="";"";VERKETTEN(Mieter!E12;" “;Mieter!F12)) in der Tabelle Eingabe (E9) und mit
=WENN(C12=”";"";VERKETTEN("–";C12;"–")) in der Tabelle Zählen Test (F12)

exakt die gleichen Bedingungen.

Ich habe eine Funktion, die eine Bedingung abfragt – WENN().
Trifft die Bedingung zu, wird ein Leerstring zurückgegeben.
Trifft die Bedingung nicht zu, wird eine andere, identische Funktion aufgerufen – VERKETTEN().

Der einzige Unterschied ist, dass die Funktion VERKETTEN() in der Tabelle Eingabe ihre Werte aus der Tabelle Mieter und die Funktion VERKETTEN() in der Tabelle Zählen Test ihre Werte aus der gleichen Tabelle aus dem linken Bereich bezieht.

Ich geb’s auf… lies und verstehe bitte was ich schrieb:

Der benannte Bereich _Name (Zählen Test) ist aber der Zellbereich 'Zählen Test'.C12:C31

Die Formel in 'Zählen Test'.F34 sollte stattdessen sinngemäß lauten:

=ANZAHL2(F12:F31)-ANZAHLLEEREZELLEN(F12:F31)

=> 15.

Hallo @erAck,

danke für deine Versuche, das Problem zu verstehen. Der Aufforderung “lies und verstehe bitte…” werde ich natürlich sofort nachkommen, sobald ich den entsprechenden Schalter bei mir gefunden habe. Da ich aber das Problem lösen und auch verstehen möchte, bleibt mir auf der Suche nach dem Schalter nur die Möglichkeit nachzufragen.

Während ich diesen (jetzt geänderten) Text schreibe, bin ich alles noch einmal durchgegangen und habe tatsächlich den Schalter gefunden. Ich hatte den Namensbereich _Name falsch definiert. Damit verstehe ich auch jetzt deine Erklärungen.

Vielen Dank für deine Lösung.

1 Like