範囲が1行のみで、計算の一部が空白の場合、Sumproductは失敗します


0

範囲に複数の行がある場合に機能する次の式がありますが、行が1つだけで因子の1つが空白の場合は#VALUEエラーが生成されます。

=SUMPRODUCT(cost, units)

Cost    Units
   1         1
   2         1

結果は3です。

Cost    Units
   1         
   2         

結果は0です。

Cost    Units
   1         1

結果は1です。

Cost    Units
   1         

結果は#VALUEです。

IFERRORで式をラップすることにより、エラーを防ぐことができます。

=IFERROR((SUMPRODUCT(cost, units)), 0)

SUMPRODUCTが1行しか機能しないのはなぜですか?IFERRORラッパーよりもこれを処理する良い方法はありますか?

回答:


2

試して

=SUMPRODUCT(costs*units)

Evaluate Formula Toolで関数がこのステージを通過することは興味深いことです。

ここに画像の説明を入力してください

#Value!を提示します エラー。ただし、セルに実際の数式が含まれている場合

=SUMPRODUCT(1,0)

結果は0です。これはバグのように見えます。

エラーを表示しない別の可能な構文は次のとおりです。

=SUMPRODUCT(--(costs),--(units))

編集:他のExcel MVPからの調査と入力の後、上記の動作の説明があります。Sumproduct内で、Excelは空のセルをゼロ値に強制しますが、配列、つまり複数のセルで構成される範囲の場合のみ。単一のセル範囲は強制をトリガーしないため、空のセルは0に強制されません。

乗算演算子または二重単項演算子を使用すると、空のセルが強制的にゼロ値になります。

紛らわしく、少し刺激的ですが、入力が演算子またはダブル単項に接続されていない単一の空のセルである場合、単一の空のセルは額面で取得され、#Value!をトリガーします!エラー。数値ではないため。


この動作は間違いなくバグのように見えます。ダブルダッシュ式をありがとう。IFERRORバージョンよりも優れています。
ジョンクロウェル

1
これはバグではありません。SUMPRODUCTの仕組みです。この関数は、引数が同じ「次元」を持つ範囲を参照することを要求します。2番目の引数が空のセルを参照している場合、関数はエラーを表示することになっています。空のセルは、テキスト、「0」およびスペースがあるセルとは異なり、ヌルと見なされます。
エルサ

@風-私は同意しません。範囲にそれぞれ2つのセルが含まれ、1つの範囲が空白の場合、エラーは表示されません。範囲がそれぞれ1つのセルである場合、エラーを表示する必要があるのはなぜですか?また、2番目の範囲に0または空白が含まれる場合、式の評価ツールはまったく同じ中間ステップを表示します。
テイリン

@Kaze-Bradの答えとその下のコメントをご覧ください。コメントを推定するために、空のセルは数字が入っているセルとは異なります。つまり、数値ではありません。したがってSUMPRODUCT、ドキュメントで指定されているように、また複数の行がある場合と同様に、それらをゼロとして扱う必要があります。
スコット

上記の説明を追加しました。
テイリン

1

MSのドキュメントページ

備考

  • 配列引数は同じ次元である必要があります。そうでない場合、SUMPRODUCTは#VALUE!を返します。エラー値。
  • SUMPRODUCTは、数値ではない配列エントリをゼロであるかのように扱います。

1
配列の引数は、すべての例で同じ次元を持っています。SUMPRODUCTは、#VALUEエラーの原因となっている場合に、数値でないエントリをゼロであるかのように処理しません。
ジョンクロウェル

1
あなたの場合、次のようなものがあります:= SUMPRODUCT(A2、B2)引数は配列ではなくセルです、正しいですか?Excelは、空のセルを#VALUEエラーの原因となるNULL配列として処理する必要があります。
ブラッドパットン

それは理にかなっている。あなたは正しいと思います。
ジョンクロウェル

1
「言い訳ではなく説明です」と言いたいのですが、コードがどのように機能するかを説明できるということは、それがバグではないということではありません。バグを理解しているということだけです。 =SUMPRODUCT(A2:A2,B2:B2)同じように失敗します。だから私は推測するバグが Excelが崩壊するということである=SUMPRODUCT(A2:A2,B2:B2)=SUMPRODUCT(A2,B2)して、その後にA2*B2私の知る限り、文書化されていない行動- 。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.