• ベストアンサー

エクセル関数(条件付sum)

宜しくお願いします。    A   B   C    D理想形 1  A001  0   A     15 2  C001  10  C     60 3  B004  20  B     20 4  A002  0   A     0 5  C002  50  C     0 6  A003  10  A     0 7  D002  0   D     20 8  A004  5   A     0 9  D005  20  D     0 上記のようなリストがあり、A列にIDのようなもの、それぞれB列に数字を持っています。グループID別には既にC列に所得してあります。 B列の数字をCのグループごとに合算し、各グループの一番数字の少ない人(AでいうとA001、BではB004)のD列に表示したいです。 sumifでいけるかと思ったのですが・・・解りにくい説明でしたら補足させていただきますので御教授いただけますでしょうか。 宜しくお願いします。

noname#40795
noname#40795

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 以下の式は、配列式ですが、配列確定を必要としません。そのまま貼り付ければ、出来るはずです。計算スピードなども、通常の関数と同等レベルにはなっているはずです。 >一番数字の少ない人とはアルファベットのあとの数字が一番少ない人です。 は、SMALL関数で、一番少ない数の人の所に出すようになっています。 =IF(SMALL(INDEX(MID($A$1:$A$9,2,3)*(LEFT($A$1:$A$9,1)=C1),,),COUNTIF($A$1:$A$9,"<>"&C1&"*")+1)=MID(A1,2,3)*1,SUMPRODUCT((LEFT($A$1:$A$9,1)=C1)*$B$1:$B$9),0) 範囲を変える場合は、編集-置換で変更してください。 例: $A$9 →$A$100 $B$9 →$B$100 なお、A1 からデータが始っているものとしていますから、例えば、2 行目からなら、 A1 →A2 C1 →C2 になります。

その他の回答 (5)

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.5

こんにちは~ すでに正解が出ていますが、一応コレでもできる、かも…? D1に =IF(--SUBSTITUTE(A1,C1,"")=MIN(IF($C$1:$C$9=C1,--SUBSTITUTE($A$1:$A$9,C1,""),"")),SUMIF($C$1:$C$9,C1,$B$1:$B$9),0) と入れて、Ctrl+Shiftを押しながらEnterで確定(配列数式)。 確定後、必要なだけ下にフィルコピー。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 D1に、 =IF(C1&TEXT(MIN(IF($C$1:$C$9=C1,--RIGHT($A$1:$A$9,3),RIGHT($A$1:$A$9,3)+1000)),"000")=A1,SUMIF($C$1:$C$9,C1,$B$1:$B$9),0) と入力して、[Ctrl]と[Shift]を押しながら[Enter]を押して確定します。 (数式の両端に「{}」が付きます。) これを下の行へコピー。 データが多いと処理が重くなるかも知れません。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

D1に =IF(B1=MIN(IF($C$1:$C$9=C1,$B$1:$B$9,999999999)),SUMIF($C$1:$C$9,C1,$B$1:$B$9),0) と入力し SHIFT+CTRL+ENTERキーで確定し フィルコピーします。 Aの場合、「各グループの一番数字の少ない人」がA001とA002の二人いるので、両方に値が入ってしまうのが理想形と異なります

noname#40795
質問者

補足

言葉足らずですみません。 一番数字の少ない人とはアルファベットのあとの数字が一番少ない人です。 Aだったら001、Bだったら004です。 001から始まるとも限らないし、また、リストに例を出すのをわすれましたが、001が下のほうに居る場合もあります。 皆様、二度手間にさせてしまってすみません。

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.2

No1さんの回答と同じことですが D1に =IF(MATCH(C1,C:C,0)=ROW(),SUMIF(C:C,C1,B:B),0) この回答は、グループで最初に出現した行に回答が入ります。 >各グループの一番数字の少ない人(AでいうとA001、BではB004) 「一番数字の少ない人」・・・ID番号、B列の値? 「一番数字の少ない人」を条件にすると式が複雑になります。

noname#40795
質問者

補足

言葉足らずですみません。 一番数字の少ない人とはアルファベットのあとの数字が一番少ない人です。 Aだったら001、Bだったら004です。 001から始まるとも限らないし、また、リストに例を出すのをわすれましたが、001が下のほうに居る場合もあります。

  • kaisendon
  • ベストアンサー率44% (114/257)
回答No.1

こんにちは D1に =IF(COUNTIF(C$1:C1,C1)>=2,0,SUMIF($C$1:$C$9,C1,$B$1:$B$9)) 下方向にコピー (例題の表のような場合フィルハンドルのダブルクリックでもいいです) で如何でしょうか?

noname#40795
質問者

補足

言葉足らずですみません。 一番数字の少ない人とはアルファベットのあとの数字が一番少ない人です。 Aだったら001、Bだったら004です。 001から始まるとも限らないし、また、リストに例を出すのをわすれましたが、001が下のほうに居る場合もあります。

関連するQ&A

  • エクセルの集計について

    立て続けにお力をお借りします!>< リスト内において A列:名前 B列:担当社名 C列:担当社種類(A,B,C,D) の場合において たとえばD1に名前を入れると、 D2にその人がAを何件、Bを何件もっているかが出るような表を作りたいです。 数字の合計はDSUMやSUMIFでいいかと思いますが VLOOKUPとCOUNTIFの合算みたいな集計になるので詰まってます: よろしくお願いいたします;

  • エクセルの条件付きSUMに

    エクセルの条件付きSUMに ついての数式の質問です    A    B   C   D 1  リンゴ  4 \120 2  ミカン  3 \100 3  リンゴ  3 \130 4  リンゴ  2 \120 5  ミカン  3 \100 リンゴ(A列)120円(C列)の商品の 個数(B列)の合計をだす。数式があれば教えて下さい 宜しくお願いします。

  • エクセルの関数

    エクセルの関数 ですが、 SUMIF を使いたいのです。 シート1の 1行目には 見出しが入っています。 A2~A50に、A店 B店 C店 D店 がランダムに入っています。 B2~B50に、名前が入っています。 C2~C50に、売上の数字が入っています D2~D50に、すべてに 1 が入っています。 E2~E50には、ところどころに 1 が 入っています。 シート2に、SUMIFを使って、E2~E50に入っている 1 の人だけの 各店の合計を出したのですが、どうやったらいいのですか? シート2のA1にはA店 A2にB店 A3にC店 A4にD店 が入っています。 そうすると、シート2のB2には、 =SUMIF(Sheet1!A2:A50,A2,Sheet1!$C$3:$C$50) となるということでいいのですか? ですが、 これは、各店の全体の合計です。 やりたいのは、E2~E50に 1 が 入ってる人のみ 各店の 合計を シート2の B列にだしたいのです。 関数の方法を教えてください

  • Excel複数条件での合計 sumif?if&sum?

    A列、B列、C列に数字が入力されています。 A列=何月か B列・C列=金額 どの列も空白であるセルが混在しています。 上記条件で求めたいものは、 A列に入力がある上で、B列の金額+B列が空白であった場合、C列からひっぱって来た金額の和です。 IF関数にSUMを入れ込むのか、SUMIFを使うのか試してみたけれど式が考え出せませんでした。 どなたか方法をご教授ください。 よろしくお願いいたします。

  • 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つとなった時どうしたらよろしいでしょうか?

  • こんな時の関数(検索条件、絶対値)

    A 1 C -38 C 2 B 89 A -22 D 4 上記の数字のうち、Aの絶対値計、Bの絶対値計・・・と算出するにはどうすると良いでしょう? B7=SUMIF(A1:A5,A7,ABS(B1:B7))かと思ったのですが、エラーになってしまいます。

  • エクセル関数の質問

    よろしくお願いします。 エクセル2003を使用してます。 A     B     C     D      1      2     3 1     1     1      1 2     3     4      5 3     5     7      9 4     7     10     13 5     9     13     17 6     11     16 7     13    19 8     15 9     17 10    19 11 12 13 14 15 16 17 18 19 20 上記のA列の1~20(実際はもっと多い)の数字を B列、C列、D列のように並べたいのですが、 1行目の1,2,3の意味は 1だったらA列の数字を1行間隔ずつあけて、B列に行を詰めて並べる 2だったらA列の数字を2行間隔ずつあけて、C列に行を詰めて並べる というような意味なのですが、わかる方がいましたらご教示お願いします。

  • エクセルの関数

    A列に日付B列に金額が入っています。 C1とD1に日付を入力するセルをつくり C1の日からD1の日のB列金額の合計を出したい場合 どのような関数を使えば良いですか?SUMIFで出来ますか?

  • 《エクセル2000》条件にあった行のみ合計する?

    A1~D20の範囲に数字が入っています。 うち、A列は数字と空白が混在しています。 「A列に数字が入っている行のみ、B列~D列を足し合わせ、さらにそれの20行分の和を求める(A列に空白が入っている行のB~Dは加算しない)」 …という式は作れるでしょうか。 自分でもSUMやらSUMIFやらを使ってトライしてみたのですが、どうもうまくいきませんでした。 よろしくお願いします。

  • エクセルの日付関数について教えてください。

    エクセルの日付関数について教えてください。 A列には日付が入力されています。 B列には金額が入力されています。 C列にも日付が入力されています。 A1に入力された日付(例:2010/4/30)とC1に入力された日付(例:2010/4/30)が同じ日付のときだけ、B列の金額を抽出しD10に合算させたいと考えています。 ***【サンプル】*****************************    A   B   C   D 1 4/30  100  4/30 2 4/30  200  4/30 3 5/1   100   4 5/2   200  5/2 5 5/2   100  5/2 6 7 8 9 10            同じ日付(1)の合計 11            同じ日付(2)の合計 ******************************************* 上記の場合のD10やD11の関数は、どのような関数に すべきでしょうか? どなたかご教授をお願い致します。 【環境】 WindowsXP Pro Excel 2003

専門家に質問してみよう