• ベストアンサー

エクセル関数(条件付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でいけるかと思ったのですが・・・解りにくい説明でしたら補足させていただきますので御教授いただけますでしょうか。 宜しくお願いします。

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

  • ベストアンサー
  • 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