• 締切済み

小難しいかもしれない関数

   A  B  C 1行 あ い 300 2行 あ   100 3行   い  50 という表があったとして SUMIF関数の要領で 「あ」と「い」が混在する場合には それぞれに半分ずつ(この場合は各150) 「あ」のみの場合はそのまま 「い」のみの場合もそのまま →この場合の計算結果は  「あ」250  「い」200 というような関数を作りたいです。 ちなみに、行は100行ほどあります。 どなたか教えていただけないでしょうか。

みんなの回答

回答No.5

#3さんの回答に対して、koba_ponponさんの補足要求の説明がありませんでしたので、私の勉強のつもりで回答いたします。 一般に下記のような金額の合計を出す場合は、単価×数量で金額を出してそれをSUM関数などで合計します。 品目 単価 数量 金額 A   10   2   20 B   20   3   60      合計      80 それを金額を計算しないで一発で合計:Σ(単価×数量)を出すのが、SUMPRODUCT関数です。 似たような関数にSUMSQ、SUMX2MY2、SUMXMY2などがありますので、興味があればHELPなどで確認ください。 #2さんの回答は、これをうまく利用したのです。 式が煩雑なので以下のように考えてください。 「あ」=SUMPRODUCT(C1*((A1="あ")*(B1="い")*1/2+(B1<>"い")) すなわち、SUMPRODUCT関数は、これを1から3行まで計算して合計します(配列数式の考え方)。 順番に説明しますと、 A1="あ"ならTUREで1を返し、 "あ"でなければFALSEで0を返します。 B1="い"ならTUREで1を返し、 "い"でなければFALSEで0を返します。 (A1="あ")*(B1="い")の「*」はANDの意味なので、"あ"と"い"の条件がそろった場合のみ1を返します。 結果は以下のとおりです。 A B  結果 あ    0      い  0  あ  い  1 よって1行目の(C1*(A1="あ")*(B1="い")*1/2は、 300*1*1*1/2=150 となります。 次の +(B1<>"い"の「+」は、ORの意味でC1*(A1="あ")*(B1="い")*1/2の条件もしくは、B1<>"い"の条件なら、ということです。 B1<>"い"は、B1="い"でなければ、TUREで1を返し、"い"であれば、FALSEであり0を返します。 A B  結果 あ    1      い  0  あ  い  0 よって1行目は、300*0=0 したがって1行目の結果は、 300*1*1*1/2+300*0 =150+0 =150 同様に2行目、3行目もおなじ計算を行い、最後に合計されます。 「あ」は、 1行目 300*1*1*1/2 + 300*0=150 2行目 100*1*0*1/2 + 100*1=100 3行目  50*0*1*1/2 +  50*0=0 よって、「あ」は、150+100+0=250となります。 「い」も同様な考え方です。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

答えも出てしまって後から聞くもの、間が抜けているが 小生あたまが悪いらしい・    A  B  C  D 1行 あ い 300 2行 あ   100 3行   い  50 とD列に付いて D1は「あ」の分300÷2=150 「い」の分300÷2=150、で合わせて300。 D2は「あ」の分100に300÷2=150(?)の 150を足して250。 D3は「い」の分50に300÷2=150(?なぜこれを持ってくるのか)の 150を足して200。 と言うことでしょうか。 「あ」「い」混在と、単独でルールが統一取れないように思いますが。 ビジネスニーズが背景にあるのでしょうが、どう言うケースでしょう。

koba_ponpon
質問者

補足

経費負担部署の問題なのです。 「あ」という部署のためだけに動いた→ 「あ」100%負担 「い」   〃          → 「い」100%負担    「あ」「い」の部署のために掛け持ちで動いた→ それぞれ半額負担 …それを月で合計する という計算なのです。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

上記以外の追加設定がないなら 「あ」=SUMPRODUCT(($C$1:$C$3)*($A$1:$A$3="あ")*(($B$1:$B$3="い")*1/2+($B$1:$B$3<>"い"))) 「い」=SUMPRODUCT(($C$1:$C$3)*(($A$1:$A$3="あ")*1/2+($A$1:$A$3<>"あ"))*($B$1:$B$3="い"))) SUMIFにこだわるならD列で=A1&B1として下方にコピーしておいて 「あ」=SUMIF($D$1:$D$3,"あ",$C$1:$C$3)+SUMIF($D$1:$D$3,"あい",$C$1:$C$3)/2 「い」=SUMIF($D$1:$D$3,"い",$C$1:$C$3)+SUMIF($D$1:$D$3,"あい",$C$1:$C$3)/2

koba_ponpon
質問者

補足

回答、ありがとうございました! SUMPRODUCT関数でやってみたいのですが、 良ければ書いていただいた式の解説をお願いできないでしょうか。 この関数は A列*B列の合計の関数でしたよね?

全文を見る
すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 前提条件として、A列は必ず「あ」、B列は必ず「い」が入るとします。 「あ」の合計は、 =SUMPRODUCT((A1:A10="あ")/((B1:B10="い")+1),C1:C10) で、「い」の合計は、 =SUMPRODUCT((B1:B10="い")/((A1:A10="あ")+1),C1:C10) です。 どちらに「あ」「い」が入るか決まっていない場合は、補足して下さい。 その場合は、AB列ともに同じ文字が入る可能性があるのか、その場合も1/2なのか、も補足して下さい。

全文を見る
すると、全ての回答が全文表示されます。
  • ledm
  • ベストアンサー率21% (19/89)
回答No.1

1行目の“あ”の座標をA1とした場合に、D1セルに  =IF(AND(A2="あ",B2="い"),C2/2,C2) でいけるかと思います。 IF関数での判定ですが、その条件文にAND関数を入れ、『“あ”と“い”』が共に入っている時に数値を半分にします。 尚、AとBのどちらに“あ”と“い”が入るかわからない場合には、  =IF(AND(OR(A2="あ",A2="い"),OR(B2="あ",B2="い")),C2/2,C2) で対応できます。 但し、A・B両方に“あ”“い”それぞれが入っていても半分にしちゃいますが・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL SUMIF関数について

    EXCELのSUMIF関数ですが、マニュアル通り使用すると 思ったとおりの計算ができません。    A   B  C   1  1  10 100 2  2  20 200 3  3  30 300 4  4  40 400 5  5  50 500 の様な5行×3列の表で A列が>3のもののB列C列の合計を求めたい場合 =sumif(A1:A5,">3",B1:C5) とすれば990という合計が欲しいのですが、やってみると 90にしかなりません。(B列しか合計されていない) どうなっているのでしょうか。

  • ExcelのSUMIF関数で検索条件が複数あるとき

    A="あ" もしくは、A="い" のときのBとCの合計を求めたいと思ってます。 SUMIF関数で計算できるのは分かったのですが、計算式が長くゴチャゴチャ しているので、もっとスマートに計算できる方法があれば、教えてください。 =SUMIF(A1:A5,"=あ",B1:B5)+SUMIF(A1:A5,"=あ",C1:C5)+SUMIF(A1:A5,"=い",B1:B5)+SUMIF(A1:A5,"=い",C1:C5)   A  B  C 1 あ 500 80 2 い 300 50 3 え 800 40 4 い 200 80 5 う 100 60

  • EXCEL 関数で教えてください。

    部品Aの業者が数社、部品Bの業者が数社・・・(続きます) 年度ごと、部品ごと、業者ごとに数値を出したいです。(表1を作成したい) SUMIFでは出るのですが、部品点数がかなりあるため、数式を変更する手間がかかってしまいます。。 サンプル表で C12セルに =SUMIF($M$3:$M$9,$B12,C$3:C$9) C16セルに =SUMIF($N$3:$N$9,$B16,C$3:C$9) 入れています。 A列に部品Aがあったら2行目の部品AからB列の業者名を探して数値を入れて行きたいのですが 関数でできるでしょうか。。 よろしくお願いします。

  • SUMPRODUCT関数について

    SUMPRODUCT関数を使って「タテ100行ヨコ10列のデータの入った表」からA1*B1+A2*B2+A3*B3+……+A99*B99+A100*B100の計算と A1*C1+A2*C2+A3*C3+……A99*C99+A100*C100というように10列共計算しました。 さらに各々の掛け算の結果を小数点以下を切り捨てたいのでTRUNC関数を使おうと思いましたが上手くできません。 他の関数でも良いのですが良い知恵をお貸しください。

  • エクセルの集計(縦横での集計)

    (sumproduct関数やsumif関数を使うのでしょうか?) 縦列はA~Cの範囲で今後も増えていきます。 横列は1~3の範囲で今後も増えていきます。 表(4行6列の表)    1   1    2   3   3   3 ------------------------------------------- A | 100  10   20  30  100   10 A | 100  10   20  30  100   10 B | 200  100  100  100  30   20 C | 300  200  50  200  10   30 結果 A1:220 A2: 40 A3:280 B1:300 B2:100 B3:150 C1:500 C2:50 C3:240 よろしくおねがいします。

  • EXCEL関数について

      A   B   C   D   E   1200 1500 1000  2500   =(A1*B1)/C1 1  ・  ・  ・   ・   ・ 2  ・  ・  ・   ・   ・ 20                =SUM(E1:E19) 上のように、E20セルに行ごとの計算結果の合計を出す式がありますが、行ごとの計算を一度に行う関数はないでしょうか?乗算だけでしたらSumproduct関数で出来ますが、除算が入った場合の関数が分かりません。ご教授を宜しくお願いします。

  • EXCEL SUMIF 関数の計算結果が倍数になってしまう

    EXCEL SUMIF 関数の計算結果が倍数になってしまう EXCELのC列に下記数式を入れているのですが、計算結果がなぜか2倍された値が入ってしまいます。 色々と検索してみたのですが、よく分からず、皆様のお力をお貸し頂きたく。 =IF(A2=A3,"",SUMIF(A:A,A2,B:B))

  • Excelで関数を別の関数に変える・・・

    こんにちわ。 すでに組み込まれている関数を、別の関数に変えることって出来ますか? 1行目・・・=SUMIF(A会社.csv!S:Y,"積立",A会社.csv!X:X) 2行目・・・=SUMIF(B会社.csv!S:Y,"積立",B会社.csv!X:X) 3行目・・・ と、各行会社名が違うんです。 この関数 1行目・・・=IF(ISERROR(A会社.csv!A1),"",SUMIF(A会社.csv!S:S,"積立",A会社.csv!X:X)) 2行目・・・ と各行違う会社となるように、関数だけ変えたい場合の方法ってありますか? 教えてください。

  • 関数を教えて下さい。

    関数を教えて下さい。 何時もお世話になります。先日も色々と教えて頂きまして有難うございました。 又教えてもらいたいのですが宜しくお願いします。 相手が0の場合だけ計算しない方法を教えて下さい。 行1列Aに0行1列Bに100と入力します。式は行1列A-行1列B=行1列Cに100と計算しますが列Cに0と計算したいのです。計算方法教えて下さい。宜しくお願いします。

  • Excelの関数を教えてください。

    Excelの関数を教えてください。    A  B  C 1  *  A  100  2     A  200 3  *  B  300 4  *  A  400 上記のような表があるとします。 「A列が*でなおかつB列が"A"の時Cを合計しなさい。」というような式を作りたいのですがどのようにしたらよいでしょうか?うえの表で言うとこの式で「500」という数字を表示したいのです。条件が1つの時は「SUMIF」関数でやったのですが条件が2つとなった時どうしたらよろしいでしょうか?

このQ&Aのポイント
  • 久しぶりに刺繍をしようと思ったら、タッチパネルの液晶がストライプ状に切れて、反応しなくなりました。自分で対処できる方法はあるのでしょうか?また、古いミシンなので、修理してもらえるのか気になります。
  • タッチパネルが壊れてしまい、久しぶりの刺繍ができなくなってしまいました。自分で修理する方法はあるのでしょうか?また、古いミシンなので、修理してもらえるのか心配です。
  • タッチパネルの故障で久しぶりの刺繍ができなくなりました。自分で対処する方法はあるのでしょうか?また、古いミシンなので、修理してもらえるのか不安です。
回答を見る

専門家に質問してみよう