問題定義:
セルに任意の数値を入力しますA1
。次の数式を最初の行の任意の場所で試してください。
=SUM(INDIRECT("A"&ROW()))
と
=SUMPRODUCT(INDIRECT("A"&ROW()))
最初の数式は評価され、2 番目の数式は #VALUE エラーを返します。これは、ROW()
関数の内部での動作が異なることが原因SUMPRODUCT()
です。
最初の式では、 をROW()
返します1
。{1}
2 番目の数式では、数式が CSE 数式として入力されていなくても、row は (1 つの長さの配列) を返します。
なぜこれが起こるのですか?
バックグラウンド
タイプの数式を評価する必要があります
=SUMPRODUCT(INDIRECT(*range formed by concatenation and using ROW()*)>1)
これはエラーになります。この問題の回避策として、ROW()
別のセル (明らかに同じ行) で計算し、それを my 内で連結するようになりましたINDIRECT()
。代わりに、 のような sum 関数内にカプセル化することも試みましたが、それも同様SUM(ROW())
に機能します。
誰かがCSE を入力せずにROW()
内部で配列を返す理由を説明 (または説明できるリソースを参照) していただければ幸いです。SUMPRODUCT()