この場合、Excelの配列数式をSUMでラップすると内容の合計が生成されないのはなぜですか?
-
03-07-2019 - |
質問
賢い人々、
Excelでは、SUMで配列数式をラップしても、すべての場合に配列の内容の合計が生成されるわけではないようです。 (つまり、私には見えます。明らかに、混乱する可能性があります。)
これは、Excelで内部結合に相当するものを記述しようとしたときに発生しました。 Excel for Macが関係する理由により、Visual BasicまたはMS Queryを使用せずにこれを実行しています。配列数式とINDEX / MATCHのみです。理解するのに途方に暮れているこの奇妙な行動とは別に、私は成功したと思います。
現在、私はクラッジを使用していますが、必要ないのは良いことです。ヘルプやアドバイスをいただければ幸いです。
以下は問題を再現します:
表1
key | fkey
----+------
a | x
a | y
b | x
b | y
表2
key | value
----+------
x | 1
y | 10
上記のレイアウトは、これら2つの小さなテーブルがスプレッドシートにどのように表示されるかを表すものと想定されています。 4つの明らかな範囲には、 table1.key
、 table1.fkey
、 table2.key
、および table2.value
。
それで、内部結合です。 「table1.fkey = table2.key」に結合して、表1の特定のキーに対応する表2の値が必要です。数式の入力:
{=("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE))}
into two 垂直セルに必要な結果が得られます。すなわち:
1 10
(クール、または何?)これまでのところ、これで問題ありません。しかし、実際には、上記の2つの数値の合計が必要です。したがって、上記の数式をSUMでラップし、結果を単一セルに入力しました。
{=SUM(("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE)))}
結果?
2
誰がいったい何が起こっているのか何かを知っていますか?
ジェームズ
解決
単一セル配列式で使用する場合、INDEXのrow_num引数を配列にすることはできません。 INDEX関数は常に1を返します。これを試してください
=SUM(INDEX(table2.value,{2,1}))
INDEXは配列の最初の要素のみを受け入れるため、常に10を返します。単一セル配列の数式とマルチセルで異なる動作をする理由はわかりません。