• ベストアンサー

複数の条件での合計を出したいのです

エクセルの関数を使い 条件セル E2の値 条件の検索範囲の列Dから抜き出し その行のG列-H列-I列(G列の空白の時の値)の合計を出したい つまり E2=2の時 D列   G列 H列 I列 1行 1 2 2 2行 2 3 1 1 3行 2 2 2 答えは 3-1-2-2 こんな事を実現したいのですが 頭がグルグルしてしまってます ご指南ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

# 作表は 半角スペースを使うと崩れてしまいます 数式でやるなら =SUMIF(D1:D3,E2,G1:G3) - SUMIF(D1:D3,E2,H1:H3) - SUMPRODUCT((D1:D3=E2)*(G1:G3="")*(I1:I3)) VBAでやるなら 標準モジュールに Function myCalc(ByVal n as integer, rD as Range, rG as Range, rH as Range, rI as Range) as Integer   dim sum as integer, i as integer   Dim sum As Integer, i As Integer   If rD.Rows.Count <> rG.Rows.Count Or _     rH.Rows.Count <> rI.Rows.Count Or _     rD.Rows.Count <> rH.Rows.Count Then       Err.Raise 13   End If   sum = 0   For i = 1 To rD.Rows.Count     If rD(i, 1).Value = n Then       sum = sum + rG(i, 1).Value       sum = sum - rH(i, 1).Value       If rG(i, 1).Value = "" Then         sum = sum - rI(i, 1).Value       End If     End If   Next   myCalc = sum End Function として セルへの数式は =myCalc(E2,D1:D3,G1:G3,H1:H3,I1:I3) といった具合でしょう

tompapa56
質問者

お礼

どうも ありがとう御座いました。 SUMPRODUCT関数ですよね ?? やはり 良く理解できていないようで はまっていました すっきりです!! いつも ご指南頂きありがとう御座います。

関連するQ&A

  • 複数条件の番号付けについて

    「メーカー」「商品」「販売可否」のある行に対し、以下の条件付きで番号を1から振りたいと考えています。 条件1: メーカー及び商品が重複した行があれば、既に振られた番号にする 条件2: 販売可否が空白の場合は無視する 条件3: 同じメーカーが連続するように番号を振る 条件4: 元の表は並び替えなどの加工は出来ない 一応、添付画像のような形で実現は出来ています。 以下のような式を使っています。 (1)G4:G21 =IF(COUNTIF(C$3:C3,C4)=0,MAX(G$3:G3)+1,VLOOKUP(C4,C$3:G3,5,FALSE)) (2)I4:I21 =IF(COUNTIF(D$3:D3,D4)=0,MAX(I$3:I3)+1,VLOOKUP(D4,D$3:I3,6,FALSE)) (3)K4:K21 =IF(E4<>"",G4*1000+I4,"") (4)M4:M21 =INT(IF($K4<>"",SUMPRODUCT(($K$4:$K$21<>"")*($K$4:$K$21<=$K4)/COUNTIF($K$4:$K$21,$K$4:$K$21)),0)) (4)で算出される値を得るために、(1)(2)(3)の行を使っています。 ちなみにこの(4)の値を使って、B24:D37の表を作っています。 ※画像では省略していますが、メーカー・商品ごとの台数・金額合計の表になります。 この表で使っている式は以下の通りとなります。 (5)B26:B37 =IF(MAX(B$25:B25)+1>MAX($M4:$M21),"",B25+1) (6)C25:C37 =IFERROR(INDEX($C$4:$E$21,MATCH($B25,$M$4:$M$21,0),1),"") (7)D25:D37 =IFERROR(INDEX($C$4:$E$21,MATCH($B25,$M$4:$M$21,0),2),"") 質問としては、(4)を求める為に4列使っているものを減らせられないか、理想は1列ですがせめて2列に纏められないかと思っております。 何卒、宜しくお願い致します。

  • 複数の条件での合計を求める方法

    A列の1から10行まで「○○」と入力し、なおかつ、B列とC列とD列の1から10行まで、「△△」と入力したときのみ、E列の1から10行までに入力された数字の合計を求める方法を教えてください。

  • 【Excel】複数条件のAVERAGE

    ある特定したいくつかの要素の合計を、セル「I5」にだすとします。 たとえば表2のH2の「年」、同表のH3の「店舗」、同表のG5以下の「種目」からそれぞれ具体的な条件を、たとえば表1のA列より「2016年」、同表のE列より「店舗(1)」、同表のB列より「アスパラガス」を探し出すようにする場合関数式は以下のような式となりますが、 =SUMIFS($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G5,$E$2:$E$596,H$3) これを合計ではなく平均値で出す場合、「SUMIFS」のみ「AVERAGE」に入れ替え =AVERAGE($D$2:$D$596,$A$2:$A$596,$H$2,$B$2:$B$596,$G5,$E$2:$E$596,H$3) という式を「I5]に入れると確かに平均値はあっていたのですが、この式をコピー(セルのコピー)しても、正常に反映されず、I5の回答がそのままコピーされてしまいます。 何が原因なのでしょうか?

  • 【Excel】複数条件の合計

    Excel2003を使用しています。 Sheet1のD7:D200に『あ』、G7:G200に2(数値)、と入力されているH列の合計をSUMPRODUCT 関数を使用して計算しました。 同じ条件で、範囲の最終行数をあるセルに取り出しておいて、INDIRECT 関数を組み合わせたのですが、うまくいきませんでした。 数式は、Sheet2に下記のように入力してみましたが、このような使い方は間違っているのでしょうか? =SUMPRODUCT((Sheet1!D7:INDIRECT("D"&F1)="あ")*(Sheet1!G7:INDIRECT("G"&F1)=2)*(Sheet1!H7:INDIRECT("H"&F1))) また、他にこんな方法があるというのがあれば、あわせて教えていただけると嬉しいです。 よろしくお願いします。

  • エクセル 複数の条件で答えが変わる

    B2のセルに条件の値が入ります 答えをF2に出したいです たとえば B2のセルが空白の時 D2の値をF2に (F2=D2) B2のセルが11の時  D2の値に6を掛た値をF2に (F2=D2*6) B2のセルが12の時 D2の値に12を掛た値をF2に (F2=D2*12) B3 B4-------と続きます こんなことを実現させたいのですが ご指南ください

  • 複数の条件を満たすレコードの合計を求める

    出荷日 品名 数量 単価 合計 担当者 部門 5/2  もも  1  100  100 A   14 5/3  珈琲  2  150  300 B   15 5/4  ばなな 3  100  300 C   14 1行から100行位の表があってそのつど入力していき、(5月分の表としてありますので、100行全て埋まる訳ではありません)別のシートに   A列  B列    C列    D列 1     A担当者  B担当者  C担当者 214部門 100     0      300 315部門  0     300     0 という表になるようにB2セルに次の式を入れました =sumproduct((sheet1!$G$2:$G$100=$A2)*(Sheet1!$F$2:$F$100=$B1)*sheet!$E$2:$E$100)) で入れるとNAME?になります。100と入れているところを今現在入力されている行数を入れると合計が表示されます上の表ではG2:G3と入れると合計が出ますが、毎日毎日データーが更新されているのでそのつど関数を入れなおせません。 どなたか、良い案を教えてください 長くなってすみません 

  • SUM関数で合計を出した行の平均がおかしい。

    タイトルの通りなのですが、 D4~D14までSUM関数で縦計算して、D列の合計を出しています。 同じように、I列まで続いています。 それぞれの列の合計は、15行目に表示されています。 現在、D14のみ数値がはいっていますが、 E列以降は入力していないので、当然15行目は「0」と 表示されています。 私は15列の平均を出したいのですが、 現在D15「1000」だと、平均は「1000」でないといけませんよね。 ですが、その時点で6で割った数字が表示されます。 15行目がD14「1000」     E14「600」 F14,G14.H14.I14はこのとき0表示。 で、平均が「800」になるようにしたいのです。 仕事でつかっているのですが、どうしてもわからず、 みなさんの知恵をお借りしたいと思います。 重複していたらすみませんが、宜しくお願いします。 助けてください!!

  • 【Excel VBA】複数の条件を満たすデータを行削除

    Excel2003を使用しています。 ある表の中のデータで、次の4つの条件を満たすデータを行削除したいのですが、マクロではどのように書いたらいいのでしょうか?  E列…データが入力されている  F列…空白  G列…空白  H列…空白 よろしくお願いします。

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • 条件付書式 複数条件について

    D列に記号(○,●,×,-,(空白))がドロップダウンリストで入力されていて、 H列に日付が入力してある表があります。 H列の日付が今日より前の場合、記号が○と空白の時は、黒文字のまま、 ●の時は、その行に色をつける。×と-の時は、文字を赤くする。というような事をしたいのですが、どのようにしたらよいのでしょうか? 条件が多すぎると思いますがよい方法がありましたら教えて下さい。 よろしくお願い致します。

専門家に質問してみよう