[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『sumproductについて』(chizuru)
sumproductを使用して、計算がどうも合わないので性質を教えてください。
A B C 1 81A 1 100 2 81A 2 50 3 81B 1 200 4 82 1 50 5 83 1 100
上記のような表で、A列が82以上で、B列が1である場合、C列を合計したいと思い、sumproductを使用しました。 sumproduct((A1:A5>82)*(B1:B5=1),C1:C5) このように作ると、実際の計算は5行目の100だけしか該当しないはずが、 全く違う計算をしてしまいます。
初歩的なことで大変申し訳ありませんが、このような条件の場合どんな関数が一番適当であるか、 SUMPRODUCTを使うのであればどうすればいいのか、ご教示お願いいたします。
文字列はどの数字よりも大きいと判断されますので、 (A1:A5>82では、A1:A3 もTRUEが返ってしまいます。 結果、100+200+100=400 が返っているのだと思います。
一例ですが、 =SUMPRODUCT(ISNUMBER(A1:A5)*(A1:A5>82)*(B1:B5=1),C1:C5) とか。 (純丸)(o^-')b
純丸さん 知りませんでした!ありがとうございます。 chizuru
せっかく書いたので、そのまま載せておきます。
↓=A1>82 [A] [B] [C] [D] [E] [F] [1] 81A 1 100 TRUE TRUE 100 ←=D1*E1*C1 [2] 81A 2 50 TRUE FALSE 0 [3] 81B 1 200 TRUE TRUE 200 [4] 82 1 50 FALSE TRUE 0 [5] 83 1 100 TRUE TRUE 100 [6] ↑ 400 ←=SUM(F1:F5) =B1=1 バラバラにして確認してみると・・・ D列が「A1:A5>82」の部分 どの行がこの条件を満たすか E列が「B1:B5=1」の部分 どの行がこの条件を満たすか F列が、各行の積、F6がその合計です。
81Aと言う文字は、82と言う数値より大きいので この行が「大きい」と見なされています。
条件として、さらに「A列が数値の場合で!!」と言うのを 付け加えるのが良いように思います。
たとえば、ISNUMBER関数は テストの対照が数値を参照するときTRUEを返します。
純丸さんの式と同じ式に成ります。
(HANA)
HANAさん ご丁寧にありがとうございます。 急いでいたので純丸さんの式を丸写し、無事任務完了したところです。 お二人の回答と解説、大変勉強になりました。 ありがとうございました。 (chizuru)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.