CALC DBANZAHL2

Liebe Liste,

ich habe seit vielen LO-Versionen bis aktuell Version: 6.1.5.2 (x64) (Windwows 7) folgende Auffälligkeit, die ich eigentlich für einen Bug halte. Wer kann sie nachvollziehen?

Ich werte eine Tabelle mit Zahlen aus. Unter anderem ermittle ich in der zweiten Spalte (Calc fängt bei 0 an die Spalten zu zählen, in DBANZAHL2 also die "1" als 2. Argument) des Tabellenbereichs die Anzahl von Werten, die einem bestimmten Kriterium genügen, mit:

=DBANZAHL2($C$9:$AA$37;1;$Krit.$V$4:$Krit.$V$5)

Dabei zeigt sich ein merkwürdiges Verhalten. Ist die erste Spalte (Spalte "0" in Calc-Zählweise) in einer Zeile leer, so wird auch ein den Kriterien genügender Wert in der Zelle rechts daneben (gleiche Zeile, Spalte 1) NICHT gezählt (d.h. das Ergebnis von DBANZAHL2 ist um 1 zu niedrig). Trage ich einen beliebigen Wert in in Spalte 0 (selbstverständlich immer noch in der gleichen Zeile) ein, wird korrekt gezählt.

Das ganze ist insofern relevant, als dass sich die Tabelle erst mit der Zeit vollständig mit Werten füllt, die Zwischenergebnisse (also auch die mit DBANZAHL2 ermittelten Werte) aber durchaus interessant sind.

Besten Dank für Eure Beobachtungen!

Markus

Hallo Markus,

zur Sicherheit geht die Mail auch direkt an dich, falls du nicht bei der Liste angemeldet bist. Das solltest du dann allerdings tun, weil man normalerweise nur über die Liste kommuniziert (auch damit man überhaupt die Reihenfolge mitbekommt), du würdest also Antworten sonst gar nicht bekommen.

Ich habe beim Aufräumen diese Anfrage gefunden. Ich hatte sie sicher nicht näher angeschaut, weil ich Calc praktisch nie verwende und deshalb warten wollte, ob jemand anders antwortet. Da das offensichtlich nicht der Fall gewesen ist, habe ich nun doch mal selber draufgeschaut.
Ich habe auch eine Weile gesucht, bis ich darauf gekommen bin, woran das wahrscheinlich (denn ich kenne deine Datei ja nicht) liegen könnte, geholfen hat mir das parallele Ausprobieren mit DBANZAHL, das ja nur numerische Werte auswertet, da kann man das in etwas anderer Form ausprobieren.
Ich denke, dass dein Problem darin liegt, dass du die übliche Spaltenzählung von Calc, wenn man nicht mit den Buchstaben arbeitet, auf diese Funktion überträgst, was naheliegt, aber laut der Beschreibung in der Hilfe

    "um die Spalte beginnend mit 1 innerhalb des Datenbankbereichs
    festzulegen"

falsch ist, die Spalten im Datenbankbereich werden beginnend mit 1 gezählt; sicher verwirrend, aber das ist das ewige Problem, ob mit 0 oder 1 begonnen wird, für beides gibt es Argumente.
Deine Aussage

    "Trage ich einen beliebigen Wert in in Spalte 0 ... ein"

ist nun nicht ganz eindeutig, aber ich gehe davon aus, dass du die erste Spalte des Datenbankbereichs, also Spalte C, meinst. Unter dieser Annahme kann ich das beschriebene Verhalten nachvollziehen: die Hilfe im Funktionsassistenten sagt, dass nur die Fälle gezählt werden, die nichtleere Zellen enthalten (zu ergänzen wäre: in der durch "Datenbankfeld" definierten Spalte), und genau das passiert, wenn meine Annahme stimmt. Die allgemeine Hilfe ist hier zwar nicht falsch, aber man muss aus "numerische oder alphanumerische Werte" erst schließen, dass dann eben leere Inhalte ausgeschlossen sind.
Immer unter der genannten Annahme: deine Beschreibung lässt annehmen, dass die erste Spalte des Datenbankbereichs häufig erst einmal noch nicht gefüllt ist, so dass die Wahl von 1 als zweitem Parameter sicher nicht angebracht ist; da du offenbar die zweite Spalte des Datenbankbereichs wählen wolltest (und nur aufgrund der Annahme, dass die Zählung bei 0 losgeht, 1 gesetzt hast), solltest du es mit 2 als 2. Parameter versuchen. Wenn deine Wahl der 1 wohlüberlegt war und nur durch die Fehlinterpretation, dass auch für diese Funktion von 0 ab gezählt wird,zum falschen Ergebnis führte, sollte alles OK sein.
Wenn es noch weitere Unklarheiten gibt: Diese Wahl der 2 würde bedeuten, dass du sicher bist, dass von Anfang an in dieser Spalte immer Werte stehen, was ich mangels Information zu deiner Tabelle nicht beurteilen kann. Wenn das nicht gilt, wird ein weiterer Schritt notwendig: die Funktion zählt laut Doku (ich habe das nicht detailliert getestet) nur Zeilen, die einen nicht leeren Eintrag in der durch "Datenbankfeld" definierten Spalte haben: du müsstest dann wohl eine Summenspalte einführen, die jeweils die Zeilensummen enthält, und diese abfragen (die Suchkriterien dürften ja die im Datenbankbereich leeren Zeilen ohnehin nicht erfüllen).

Es macht vielleicht das Problem etwas klarer bei der Untersuchung, wenn du statt der Spaltennummer (relativ zum Datenbankbereich, beginnend ab 1) die Zelle der Überschrift angibst (vgl. die allgemeine Hilfe), was bei dir dann wohl D9 wäre, wenn ich das richtig interpretiere. Ich gehe da immer von dem Beispiel in der Hilfe aus, das ich auf deine Angaben angepasst habe, so wie ich sie verstanden habe. Ich habe nicht ausprobiert, ob und wie das ohne Überschriften vielleicht gehen könnte.

Und die Beschreibung "Datenbankfeld gibt die Spalte an, wo die Funktion ausgeführt wird" ist jedenfalls sehr unklar, ich habe das erst nach all den Tests kapiert, dass das offenbar nur bedeutet, wo der Check über "nichtleer" bzw. bei DBANZAHL über "nicht numerisch" durchgeführt wird.
Ich schaue mir die englische Doku noch an, wenn mir etwas Gescheites einfällt, werde ich auch noch eine Korrektur der Doku anregen.

Gruß

Gerhard