Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Nicht existierende Excel-Funktion als Kriterium in z.B. SUMMEWENN
#1
Hallo zusammen,

mir ist aufgefallen, dass für einige Excel-Funktionen, wie SUMMEWENN, eine als Suchkriterium nicht existierende
Funktion von Excel übergangen wird und als Ergebnis eine Null zurückgeliefert wird. Mein Verständnis sagt mir,
dass #NAME? zurückgeliefert werden sollte.

Jetzt kann ich mich definitiv nicht erinnern, ob das schon immer so war. Von daher frage ich mal hier nach,
ob das hier jemand auch feststellt bzw. eine Erklärung dafür hätte. Oder ggf. ein bekannter Bug ist. Ich
konnte bislang dazu nichts finden.

Zwei Beispiele, aus der Beispieldatei:

Code:
=SUMMEWENN($B$1:$B$10;TEST();$A$1:$A$10)  -> liefert 0, sowohl in Excel 2016 als auch 2010
=SUMMEWENNS($A$1:$A$10;$B$1:$B$10;TEST()) -> liefert 0, sowohl in Excel 2016 als auch 2010

Ruft man übrigens für die zwei Beispiele den Funktionsassistenten auf, erscheint dort sehr wohl #NAME?
für das Argument zum Suchkriterium.

Eine Auswirkung dieses Verhaltens wäre dann, dass z.B. eine mit Excel 2016 erstellte Datei, die z.B. die
Formel =SUMMEWENNS(C1:C5;A1:A5;E1;B1:B5;MAXWENNS(B1:B5;A1:A5;E1)) enthält, in Excel 2010
als 0 angezeigt wird, weil Excel 2010 MAXWENNS nicht kennt.

Gruß


Angehängte Dateien
.xlsx   Summewenns.xlsx (Größe: 14,46 KB / Downloads: 9)
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Top
#2
Hallo maninweb,

du musst in der Formel das Wort Test in Anführungszeichen setzen ( "Test" ).

Gruß
Sigi
Top
#3
Hi,

ebenso in 2013 wird 0 geliefert.
Top
#4
(15.09.2019, 10:00)maninweb schrieb: Ruft man übrigens für die zwei Beispiele den Funktionsassistenten auf, erscheint dort sehr wohl #NAME?
für das Argument zum Suchkriterium.

Moin Mourad!
In meinem Excel (Insider-Channel) ist es sogar noch "verrückter".
Da ergibt =TEST() sogar in der Formelauswertung 0
Huh
   
   

Gruß Ralf

Es betrifft auch ZÄHLENWENN()
WENN() hingegen meckert korrekt.
DE
8WENN#NAME?
9ZÄHLENWENN0

ZelleFormel
E8=WENN(A8;test();"nicht 1")
E9=ZÄHLENWENN(B1:B10;test())
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
Hi,


mal so als Anmerkung:

Gebe ich die Formel ein, setze den Cursor in der Bearbeitungsleiste auf Test() und gehe auf fx, dann zeigt er mir als Ergebnis des Funktionsaufrufs 0.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#6
Bei mir ergibt das "undefiniert", Edgar!
   
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
Hallo maninweb, hallo Ralf,

vorbemerkt, ich hab auch lediglich Excel 2010 und 2016 im Einsatz und kann deshalb nicht eingehen auf die Feststellung von Ralf in seiner akt. Excelversion.

Ich würde es nicht als Bug bezeichnen, denn die Ergebniswerte sind mE zumindest nicht falsch. Es ist nämlich egal, ob als Suchkriterium eine nicht existierende Funktion (wie in Deinem Beispiel Test())  oder eine nicht existierende benannte Formel (wie z.B. nur test oder abc etc.) angeführt wird. Das Ergebnis ist und wird auch für letzteres  korrekt immer 0 sein, egal ob es im Suchbereich Textwerte wie text oder abc gibt oder nicht. Denn das Suchkriterium test ohne "", wird eben von Excel in diesen Funktionen richtig als Nicht-Textwert (und natürlich auch als Nicht-Zahlenwert) interpretiert. Im Formelauswertungstool von Excel wird im Zwischenschritt Excel - an dieser Stelle korrekt - Test() oder abc als #NAME?  ausgewiesen aber auch dann in dessen Endergebnis als 0, was mE so auch richtig ist.

Was ich damit meine, wird wohl verständlicher, wenn man es am Beispiel einer Formel mit ZÄHLENWENN() betrachtet. Mit Hilfe dieser Funktion kann nämlich auch die Anzahl von vorhandenen Fehlerwerten (wie z.B. #NV oder #DIV/0! oder auch #NAME?) im Bereich mittelt werden. Dagegen macht zwar natürlich z.B. =SUMMEWENN(B1:B10;#NV) keinen Sinn, weil das Ergebnis dessen wiederum der Fehlerwert wäre bzw. sein muss, aber so als Ergebnis wiederum auch korrekt. Sehr wohl kann man aber mit z.B. mit =ZÄHLENWENN(B1:B10;9/0) in B1:B10 vorhandene #DIV/0! zählen, wenn es aus unserer Sicht ungewöhnlich ist, die  so zu definieren.

Mein Fazit Vermutung: Wahrscheinliche wurde zuerst die Funktion ZÄHLENWENN() programmiert und dabei berücksichtigt, dass die User damit auch Fehlerwerte zählen möchten. Diese "Basisprogrammierung" wurde dann für die SUMMEWENN()-Funktion so beibehalten. Mag uns zwar teilweise etwas "unglücklich" erscheinen, aber ist mE deshalb noch kein Bug.
Gruß Werner
.. , - ...
Top
#8
Hi Ralf,

und Formelergebnis=0
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#9
Hallo zusammen,

vielen Dank für eure Beiträge und Ideen. Ich war mir ja auch nicht sicher, ob es ein Bug ist oder nicht und hatte es ja auch
deswegen hier reingestellt, um andere Meinungen zu lesen. Und auch um auszuschließen, dass es jetzt nur an meinem Excel liegt.

@neopa, ich gebe Dir schon recht, was Deine Ausführungen betrifft. Dennoch, aus User-Sicht, ist das Verhalten von Excel in diesem
Fall meiner Ansicht nach nicht erwartungskonform - egal wie lange das schon so ist.

Aus User-Sicht würde ich erwarten, dass Excel mir eine Fehlermeldung anzeigt, sobald eine verwendete Funktion nicht verfügbar ist.
Das Excel TEST() als Suchkriteriumsfunktion nicht erkennt bzw. parst deutet ja der Funktionsassistent an. Und, da es mit existierenden
Funktionen klappt (wie HEUTE() in meiner Beispieldatei), heißt das, dass auch tatsächlich geparst wird.

Das Problem könnte meiner Ansicht nach auch akuter werden, wenn man sich die verschiedenen Versionen von Excel 2016 bzw.
Abo anschaut. Dadurch, dass verschiedenste Versionen (Monatlich, Monatlich gezielt, Volumenlizenzen, die deutlich hinterher hinken,
Excel 2016 & 2019 Kaufversion, ...) im Umlauf sind, kann es bei Nicht-Kenntnis des Sachverhalts zur Verwirrung führen. Würde ich
z.B. SUMMEWENN(A1:A9;TEXTKETTE(D11;" ";D12);B1:B9) verwenden, dürfte Excel 2016 Kaufversion TEXTKETTE nicht kennen.

Jetzt beim rumprobieren ist mir noch was aufgefallen. Und zwar habe ich in Excel, letzte Version monatlich gezielt, die die neuen
dynamischen Arrays kennt, folgende Formel ausprobiert ...


Code:
=SUMMEWENN(A1:A9;FILTER(H2:H5;I2:I5);B1:B9)

Wenn ich die Mappe in Excel 2010 öffne, erhalte ich folgendes ...


Code:
{=SUMMEWENN(A1:A9;_xlfn._xlws.FILTER(H2:H5;I2:I5);B1:B9)}


Da, interessanterweise, greift ein Mechanismus zum Erkennen der unbekannten FILTER-Funktion. Excel behält den von
Excel 2016 berechneten Wert solange bei, bis versucht wird, die Array-Formel zu aktualisieren und zeigt dann wieder
Null an. Auch hier (durch beibehalten des Werts) würde ich also als User die unbekannte Funktion erstmal nicht bemerken.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Top
#10
Hallöchen,

ich schließe mich doch Werners Ausführungen an - da Excel hier zumindest richtig mit dem Rückgabewert der fehlenden Funktion,  #Name, rechnet. Dabei ist es egal, ob ich die Funktion direkt in der Formel verwende oder mich auf eine Zelle beziehe, in der eine Funktion ihren Fehlerwert erzeugt.

Die Funktion alleine wird korrekt als fehlende Funktion erkannt. Allerdings ist es beim Zählen egal, welche Funktionen alles noch nicht erkannt werden Smile

Arbeitsblatt mit dem Namen 'Tabelle2'
ABCD
11#BEZUG!#BEZUG!
22#DIV/0!#DIV/0!
33#DIV/0!#NAME?
44#NAME?1
55
67#NAME?1111

ZelleFormel
B1=tabelle3!A1
C1=tabelle3!A1
B2=1/0
C2=1/0
B3=1/0
C3=TEST()
B4=TEST()
C4=SUMMEWENN($B$1:$B$10;C1;$A$1:$A$10)
C5=SUMMEWENN($B$1:$B$10;C2;$A$1:$A$10)
B6=dussel()
C6=SUMMEWENN($B$1:$B$10;C3;$A$1:$A$10)
D6=SUMMEWENN($B$1:$B$10;TEST();$A$1:$A$10)
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste