• 締切済み

条件に一致したものの合計を算出する

こんばんは。いつもお世話になっております。 さて、仕事で下記のような事が出来るものを作成したいのですが、元々関数に疎いため、あれこれ試したものの未だ解決しておりません。 誠に恐縮ですがお手すきの方、いらっしゃいましたら是非ともご教授願います。 ○印をつけるとDセルに、関数で指定した金額を反映させるようにする式は  =IF(A3="○",3000,IF(B3="○",2000,IF(C3="○",1000,""))) で良いと思っておりますが、まずこれは間違いないでしょうか。(具体的な例は下記)       A        B      C      D      受講料A  受講料B  受講料C   受講料 3行目   ○                    3000 4行目           ○            2000  5行目                  ○     1000 今回、お教え戴きたい事は、○を複数つけた場合、複数受講料の合計金額をDセルに反映させたいのです。 例えば A3 と B3 に○をつけた場合は3000+2000となりますので D3 には 5000 という数字が表示されるようにしたい。 また、A3 と C3 に○をつけた場合は3000+1000となりますので D3 には 4000 という数字が表示されるようにしたい。 という事です。 マクロなどという知識は全く持ち合わせていないので、関数で上手く処理するやり方がありましたら、そちらを是非ともご教授願います。 ただ、どうしてもマクロでないとこれは不可能です、というのであれば、それをお教え下さいませ。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

>=IF(A3="○",3000,IF(B3="○",2000,IF(C3="○",1000,""))) は間違いではないが、IFの多段ネストは泥臭い。 今後の勉強のために参考。 SUMPRODUCT関数の考え方と似ているが、下記が一番すっきりしているだろう。 例 A2:E4 A列  B列  C列   D列    E列 a ○ ー ○ 4000 b ー ○ ー 2000 c ー ○ ○ 3000 E列E2に =(B2="○")*3000+(C2="○")*2000+(D2="○")*1000 下方向に式を複写。 と入れる方法もある。

noname#204879
noname#204879
回答No.6

別解です。 D3: =3000*(A3="○")+2000*(B3="○")+1000*(C3="○") D3: =SUMPRODUCT((A3:C3="○")*{3000,2000,1000}) D3: {=SUM((A3:C3="○")*{3000,2000,1000})} ← 配列数式

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.5

回答番号:No.3の回答を改良して 「1」を入力することにして =IF(ISERROR(A2*3000),B2*2000+C2*1000,IF(ISERROR(B2*2000),C2*1000,A2*3000+B2*2000+C2*1000)) どうしても、表示を「○」にしたかったら、 セルの書式を「"○";"";""」とでもしておいて、「1」を入力すれば、表示は「○」になる。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

>=IF(A3="○",3000,IF(B3="○",2000,IF(C3="○",1000,""))) この式を立てられるのであれば =IF(A3="○",3000,0)+IF(B3="○",2000,0)+IF(C3="○",1000,0) この式は理解できると思います 特に仕事で使用するなら、少し遠回りでも確実な方が良いと思います 何かあったときに、迅速に対処できると思うので 未入力の時、0が気になるのであれば =IF(COUNTIF(A3:C3,"○")=0,"",IF(A3="○",3000,0)+IF(B3="○",2000,0)+IF(C3="○",1000,0)) こんなのは如何でしょう 以上です

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

「○」を入力するんじゃなくて「1」を入力することにすれば、 =A3*3000+B3*2000+C3*1000 ですむ。 どうしても、表示を「○」にしたかったら、 セルの書式を「"○";"";""」とでもしておいて、「1」を入力すれば、表示は「○」になる。

  • bakuto11
  • ベストアンサー率38% (259/671)
回答No.2

COUNTIFでどうでしょうか? 三行目ならば CUNTIF(A3,"○")*3000+CUNTIF(B3,"○")*2000+CUNTIF(C3,"○")*1000 の様になります。 もう少しスマートなやり方が有るかもしれませんが、これでも目的の動作はします。

noname#79646
noname#79646
回答No.1

例えば、AとBが○の時、 =IF(AND(A3="○",B3="○"),5000,"") という条件式で表せるので、項目が3つの場合IF文を7つつなげれば関数のみで出来ます。 ただし、項目数が多くなると面倒なので、 E・F・G列にそれぞれ =IF(A3="○",3000,"") =IF(B3="○",2000,"") =IF(C3="○",1000,"") と式を入れ、D列には=SUM(E3:G3)を入れて、E~G列を非表示にする方が楽だと思います。

choko_late
質問者

お礼

こんばんは。早々にご回答有難うございます。 記載し忘れてしまったのですが、○が複数つく場合もあれば、1つしかつかない場合もあったり、または1つもつかない (イコール受講料をあらわすDセルはブランク)になるケースもあります。 明日は5時起床なのでそろそろ就寝しなくてはなりませんので、こちらで頂戴しました回答は出勤早々、会社で作成してみます。 夜分遅くにご丁寧な回答、有難うございました!!

関連するQ&A