web-dev-qa-db-ja.com

SUMPRODUCT(SUMIF())-これはどのように機能しますか?

パート1:

(いくつかの例から)私が望むことを正確に実行する式を作成することはできましたが、それでも、それがどのように正確に機能するかを理解することはできません。セルA1から始めます。

Price   $
table   20
chair   10

Invoice Quantity
table   17
chair   1
chair   2
table   3

私が欲しいのは、各アイテムの数量*価格(17 * 20 + 1 * 10 + 2 * 10 + 3 * 20)として計算される請求書の最終合計(430)です。次の式はこれを正しく行います。

=SUMPRODUCT(B6:B9,SUMIF(A2:A3,A6:A9,B2:B3))

SUMPRODUCTとSUMIFの基本を理解しています。しかし、ここでは、SUMIFの範囲に対する私の議論はA2:A3です。これにより、SUMIFはA8:A11(基準)ではなく、A2とA3を反復するように思われます。何が得られますか?

編集:不明確な部分は、最初の2つの引数の次元が異なる場合(ここでは、範囲は2セル、基準は4セル)、SUMIFは正確に何をするか(反復パターンは何ですか)です。また、 SUMIFの「出力」とは何ですか?配列ですか?どの次元ですか?

パート2:

さらに、数量を無視して、テーブルを見るたびに20を追加し、椅子を見るたびに10を追加したい場合は、次のように考えました。

=SUMIF(A2:A3,A6:A9,B2:B3)

しかし、それは機能しません。それが機能し、60と正しく評価されるようにするには、SUMPRODUCT()で囲む必要があります。SUMで囲むことも機能しません(おそらくSUMIFが配列を返さないためですか? ) なぜ?

私はたくさんのチュートリアルを読みましたが、それでもこれを理解することはできません。これらの両方の場合について、明確で直感的な説明をいただければ幸いです。ありがとうございました。

5
PonyEars

SUMIFは、一連の結果を生成できます。あなたが私の公式を取るなら
=SUMIF(A6:A9,A2:A3,B6:B9)
それは言う

A2の基準(つまり表)については、A6:A9を参照してください。
-テーブルが一致する場合、B6:B9の対応する値を合計します
-20を返します(つまり、17 +0 +0 +3)
-これは配列の最初の位置に格納されます

次に、A3(つまり椅子)の基準について
-A6:A9を見てください
-テーブルが一致する場合、B6:B9の対応する値を合計します
-3を返します(つまり、0 +1 +2 +0)
-これは配列の2番目の位置に格納されます

したがって、SUMIFの終了配列は{20:3}です。

Excelの数式バーでSUMIF数式を強調表示してから、F9を押すと、配列の結果を確認できます。

次に、SUMPRODUCTを使用して、SUMIFのカウントにB2:B3の$値を掛けて、合計金額を取得します。

= {20; 3} * {20:10}
= 20 * 20 + 3 * 10
= 430

パート1
のではなく
SUMIF(A2:A3,A6:A9,B2:B3)
の4要素配列を生成します
= {20; 10; 10; 20}
(テーブルに対応;椅子;椅子;テーブル)

あなたは使用する必要があります
SUMIF(A6:A9,A2:A3,B6:B9)
これは、B6:B9の値をA2:A3の2つの基準と比較して合計し、目的の結果をもたらします。
= {20; 3}
(テーブルに対応;椅子)

次に、SUMPRODUCTを使用して配列に重みを付けます。つまり、=SUMPRODUCT(SUMIF(A6:A9,A2:A3,B6:B9),B2:B3) = {20; 3} * {20:10}
= 430

パート2
COUNTIFを使用して椅子とテーブルの数の配列を返し、SUMPRODUCTを使用して値を乗算します
=SUMPRODUCT(B2:B3,COUNTIF(A6:A9,A2:A3))
= {20; 10} * {2; 2}
= 60

10
brettdj

さて、あなたはただ一つの小さな間違いを持っ​​ています:

おそらくSUMIFが配列を返さないためですか?

SUMIFは配列を処理できるため、数式を使用できますSUMPRODUCT(SUMIF())最初に機能します。SUMIFに配列を表示するには、セルのグループ(C6:C9など)を選択して数式を入力する必要があります。 ENTERのみの代わりにCTRL + SHIFT + ENTERを使用します。これにより、中括弧{}で識別される「配列数式」が生成され(CTRL + SHIFT + ENTERでのみ入力でき、手動では入力できません)、配列数式と結果が表示されます。

0
Alen