すべてのカテゴリ » インターネット・パソコン » その他

質問

終了

エクセルの関数に関する質問です。

A例 の 項目が 「●」である場合、さらに
B列 の 項目が 「★」である場合の、数値を足す

という関数はどのようのにすればよいのでしょうか?

SUMIF の入れ子になるのではと考えているのですが、
うまくいきません。

ご存知の方がいれば教えてください。

  • 質問者:yun
  • 質問日時:2009-02-12 11:45:31
  • 0

並び替え:

★方法その1
SUMIFS関数を使います。
=SUMIFS(合計対象範囲、
      条件範囲1、条件1、
      条件範囲2、条件2、
      …)
条件範囲2以降は127組まで指定可能です(Excel2007)。

A例 の 項目が 「●」である場合、さらに
B列 の 項目が 「★」である場合に、C列の数値を足す

でしたら、
=SUMIFS(C1:C15、  A1:A15、"●"、  B1:B15、"★")
でOKです。

★方法その2
Excelのバージョンが古くてSUMIFSが無い場合は配列数式を使うと複雑な計算もあっさりすっきり解決できます。配列数式の入力方法は

=SUM(IF(A1:A10="●",1,0)*IF(B1:B10="★",C1:C10,0))

と書き込んでおいてから、いつもなら『Enter』で入力を完了する所を『Shift + Ctrl + Enter』で入力を完了します。するとセルには

={SUM(IF(A1:A10="●",1,0)*IF(B1:B10="★",C1:C10,0))}

の様に{}(中カッコ)で囲まれた数式が現れます。これが配列数式です。

この様にするとこれは配列を扱う指定になり、最初の数式の『IF(A1:A10="●",1,0)』はA1~A10までの値が●ならば1、偽なら0の配列を作ります。

2番目の数式の『IF(B1:B10="★",C1:C10,0)』はB1~B10までの値が★ならばC1~C10から、そうで無い場合は0の配列を作ります。

そして配列数式の真骨頂がこれらの配列の要素をそれぞれ掛け算して新たに配列を作り、その配列の合計SUMを計算せよと言う指定になります。

配列数式をマスターすると普通では考えられないような計算が一発で計算できるようになるので是非、マスターしてみてください。

なお、上記の条件は文字列『●』『★』としてストレートに解釈した結果で数式を起こしましたが、これは適宜考えて頂くか、改めて返信頂ければそれに合わせた数式を提示いたします。

===補足===
★その3
もっと簡単な方が分かり易くて良いと言う事でしたら、論理式の真偽を判定するフラグ用のD列を作ってD列に

=IF(A1="●",IF(B1="★",1,0),0)

等と複雑な条件式を書いておいて、その一括でまとまったフラグ列を使ってシンプルに

=SUMIF(D1:D11,">0",C1:C11)

としてしまう手も有りますね。これで条件式を満たしたC1:C11の合計が得られます。

ファイルサイズが大きくなったり、CPUに負荷は掛かりますが、この方が複雑な論理式には柔軟に対応が可能か思います。

この回答の満足度
  

A例 の 項目が 「●」である場合、さらに
B列 の 項目が 「★」である場合
C列の数値を足す

と言うことであれば
複数の条件にする場合は
SUMPRODUCT関数がいいと思います。

=SUMPRODUCT((A1:A15="★")*(B1:B15="●")*(C1:C15))
範囲は書式にあわせて修正してください。

===補足===
●と★が逆でしたね。ごめんなさい。
=SUMPRODUCT((A1:A15="●")*(B1:B15="★")*(C1:C15))

  • 回答者:2003 (質問から2時間後)
  • 0
この回答の満足度
  

|A|B|C|
----------
|●|★| 1|
|▼|★| 2|
|★|●| 4|
|●|★| 8|
----------
|合 計| 9|←こういう風にしたい、ということでしょうかね?

SUMIFで2列を参照範囲にする事って出来たかなぁ...

自分がやるとしたら、
1.BとCの列に1列挿入して、A列とB列の文字列を接合します。
2.合計を表記したいセルに"=SUMIF(C2:C5,"●★",D2:D5)"と入力します。

と言う手を取ります。
お役に立ちますやら。

この回答の満足度
  

関連する質問・相談

Sooda!からのお知らせ

一覧を見る