
私は現在、表1総売上を計算しようとしています[コラムC]同じ製品ID在庫単位と販売単位を一致させる表2SUMIFS 式を次のように使用してみました。
=SUMIFS(Table2!E:E, Table2!A:A, Table1!A1, Table2!C:C, Table2!D:D)
しかし、期待した結果が得られていないようです。どなたか手を貸して、この件について手伝っていただけませんか? ご協力いただければ幸いです。ありがとうございます!
表1(望ましい結果):
表2:
答え1
私が正しく理解していれば、SUMIFS()
目的の出力に機能する適切な関数ではなく、代わりにスクリーンショットに示すように次の関数を使用します。
• セルに使用されている数式C2をSheet Named Table1
下に記入します:
=LET(
_extract, FILTER(Table2!C$2:E$19,(Table2!A$2:A$19=Table1!A2)*(Table1!B2=Table2!B$2:B$19),""),
SUM(--(INDEX(_extract,,1)=INDEX(_extract,,2))*TAKE(_extract,,-1)))
- 関数を使用して、ヘッダーを として、およびに基づいて
FILTER()
データの範囲を抽出します。Stock Unit
Sales Unit
Sales
ID
Name
- 次に、
SUM()
ブール演算を実行する関数を使用して、上記で抽出した配列Sales Unit
と配列を比較しStock Unit
、対応する配列の積の合計を計算します。
また、 を使用している場合はMS365
、出力全体を 1 つの数式で出力できるため、ここに入力する必要はありません。
=MAP(A2:A7,B2:B7,LAMBDA(x,y,
LET(z, FILTER(Table2!C:E,(Table2!A:A=x)*(Table2!B:B=y),""),
SUM(--(INDEX(z,,1)=INDEX(z,,2))*TAKE(z,,-1)))))
- 関数を使用して
MAP()
各セルの値を反復し、カスタムLAMBDA()
計算を実行します。 - 内では、
LAMBDA()
を使用して、 3つの必要な列を抽出する関数をLET()
渡し、にFILTER()
基づいてID
Name
- 次に、ここで対応する配列の積を合計し、
Stock Unit
-->INDEX(z,,1)
とSales Unit
-->を比較してINDEX(z,,2)
、およびを返しTRUE
、FALSE
同じものを と乗算して、Sales
合計後の目的の出力を取得します。
SUMIFS()
簡単な方法の 1 つは、ColumnSales Unit
を としてCriteria Range
、Stock Units
Column を として使用することですCriteria
が、これは好みによって異なります。
=SUMPRODUCT(
SUMIFS(
Table2!E:E,
Table2!A:A, Table1!A2,
Table2!B:B, Table1!B2,
Table2!D:D, UNIQUE(
Table2!C:C
)
)
)
もう 1 つの代替方法がありますが、これは推奨されますが、Excel の効率が低下します。
=SUM(FILTER(Table2!E:E,(IFNA(XMATCH(Table2!D:D,UNIQUE(Table2!C:C)),0))*(A2=Table2!A:A)*(Table2!B:B=Table1!B2),0))