Problemstellung:ROW() Funktion verhält sich anders innen SUM() und SUMPRODUCT()
Geben Sie eine beliebige Anzahl in der Zelle A1
. Versuchen Sie nun die folgenden Formeln in der ersten Zeile.
=SUM(INDIRECT("A"&ROW()))
und
=SUMPRODUCT(INDIRECT("A"&ROW()))
die erste Formel auswertet, gibt der zweite ein #VALUE Fehler. Dies wird dadurch verursacht, dass sich die ROW()
-Funktion innerhalb von SUMPRODUCT()
anders verhält. In der ersten Formel gibt ROW()
1
zurück. In der zweiten Formel gibt die Zeile {1}
(Array mit einer Länge) zurück, obwohl die Formel nicht als CSE-Formel eingegeben wurde.
Warum passiert das?
Hintergrund
Ich brauche eine Formel des Typs eines Fehlers
=SUMPRODUCT(INDIRECT(*range formed by concatenation and using ROW()*)>1)
Dies funktioniert aus zu bewerten. Um dieses Problem zu umgehen, berechne ich jetzt ROW()
in einer anderen Zelle (offensichtlich in der gleichen Zeile) und verkette das innerhalb meiner INDIRECT()
. Alternativ habe ich auch versucht, es innerhalb einer Summenfunktion wie SUM(ROW())
zu kapseln, und das funktioniert auch.
Ich würde es sicher schätzen, wenn jemand erklären könnte (oder mich auf eine Ressource verweisen, die erklären kann), warum ROW()
ein Array innerhalb SUMPRODUCT()
zurückgibt, ohne dass CSE eingegeben wird.
+1 nette Forschung! –
+1 Das ist genau das, was ich brauchte. Die "Dereferenzierung" der 'N()' und 'T()' Funktionen überrascht mich. Tatsächlich, in der Formel '= SUMMENPRODUKT (N (INDIREKT (" A "& ROW()))), die' N() 'Funktion löst tatsächlich einen Fehler #VALUE (wie in der Evaluate Formula, Excel 2003 gesehen). Das ist sehr gut zu wissen. Auch die Informationen zu den Argumenten R/U und P/Q scheinen eine gute Erklärung zu sein. Die Handhabung der 'xlTypeNil'-Elemente für die P/Q-Typen scheint mit dem Verhalten von' SUMPRODUCT() 'übereinzustimmen. Danke für eine brillante Antwort. Ich hätte nie gewusst, wofür Google ist. Verdient ein +10 !! – playercharlie
Gut, dass das half - Laurent Longre hat dieses Verhalten ursprünglich herausgefunden und gezeigt, wie Sie die CALL-Funktion mit Bezug auf xlcall.h für Arbeitsblattfunktionen verwenden können: http://www.cpearson.com/excel/Call.htm. In VBA ist dies weiterhin über 'ExecuteExcel4Macro' erreichbar. –