次のことを考慮してください。
A B C
----------------
1 a c 1
2 b f 2
3 a c 3
...
6 a c 4
ここでの目標は、条件付きSUMPRODUCTを使用して、行6の値がそれぞれの列の値と一致したときにSUMPRODUCTが計算されるようにすることです。これが面白いことです。
使用する場合:
=SUMPRODUCT((A3:A5=A1),(B3:B5=B1),C3:C5)
入力引数は次のように評価されます。
=SUMPRODUCT({TRUE, FALSE, TRUE},{TRUE, FALSE, TRUE},{1, 2, 3})
しかし、結果は0です。
数学演算子を使用して数式を評価する前に、ブール値のTRUEとFALSEを対応する1と0にキャストすると、適切な結果が得られます。
=SUMPRODUCT(--(A3:A5=A1),--(B3:B5=B1),C3:C5)
また
=SUMPRODUCT(ABS(A3:A5=A1),ABS(B3:B5=B1),C3:C5)
また
=SUMPRODUCT((A3:A5=A1)^2,(B3:B5=B1)^2,C3:C5)
等...、
数学演算子が適用されると、最終的に1と0に評価されます。
=SUMPRODUCT({1, 0, 1},{1, 0, 1},{1, 2, 3})
適切な値を取得します。
私たちはExcelに頭を悩ませてきましたが、Excel自体の入力を適切に評価できないようです。TRUEとFALSEを1と0に変換するSUMPRODUCTコンパイル済みコードが欠落しているコード行があり、エラートラップは単に0を返すと考えられます。
何かご意見は?