(いくつかの例から)私が望むことを正確に実行する式を作成することはできましたが、それでも、それがどのように正確に機能するかを理解することはできません。セル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の「出力」とは何ですか?配列ですか?どの次元ですか?
さらに、数量を無視して、テーブルを見るたびに20を追加し、椅子を見るたびに10を追加したい場合は、次のように考えました。
=SUMIF(A2:A3,A6:A9,B2:B3)
しかし、それは機能しません。それが機能し、60と正しく評価されるようにするには、SUMPRODUCT()で囲む必要があります。SUMで囲むことも機能しません(おそらくSUMIFが配列を返さないためですか? ) なぜ?
私はたくさんのチュートリアルを読みましたが、それでもこれを理解することはできません。これらの両方の場合について、明確で直感的な説明をいただければ幸いです。ありがとうございました。
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
パート2COUNTIF
を使用して椅子とテーブルの数の配列を返し、SUMPRODUCT
を使用して値を乗算します=SUMPRODUCT(B2:B3,COUNTIF(A6:A9,A2:A3))
= {20; 10} * {2; 2}
= 60
さて、あなたはただ一つの小さな間違いを持っています:
おそらくSUMIFが配列を返さないためですか?
SUMIFは配列を処理できるため、数式を使用できますSUMPRODUCT(SUMIF())最初に機能します。SUMIFに配列を表示するには、セルのグループ(C6:C9など)を選択して数式を入力する必要があります。 ENTERのみの代わりにCTRL + SHIFT + ENTERを使用します。これにより、中括弧{}で識別される「配列数式」が生成され(CTRL + SHIFT + ENTERでのみ入力でき、手動では入力できません)、配列数式と結果が表示されます。