• ベストアンサー

Excel関数について

先週末にも同様の質問をさせていただきましたが、よく分からないことがありますので、再度質問させてください。 下記のようなある表から、上位の号から並べ替え(昇順)、またその号に対応する月数についてを合計60月となるまで積算させたいのです。 ○号、月については、表示形式によりますので文字列入力としません。 ○表内の空欄(ゼロ)のセルは計算しません。 ○号数は1号から7号までとします。(0号はありません。) ○同一号数は同順位とし、それぞれ対応する月数は合算します。 ○各号に対応する月数は積算していき、最終月数の上限を60月とします。 ○下表によると6号の合計月数は117月ですが、上位の号の月数の関係により45月まで積算対象となります。 ○仮に4号で60月を超えている場合には、計算結果は「4号 60月」となります。    A  B  C ・ ・ G  H  1 7号 12月      4号  3月 2 7号 24月      5号 12月 3 6号 84月      6号 45月 4 6号 33月   ⇒ 5 5号 12月     (合計は60月) 6 4号  3月 7 ・   ・ 8 ・   ・ ・ ・   ・ ・ ・   ・

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

解答No2です。 G列に入れる式は複雑になりますので、作業列を例えばJ列に作って対応します。 J2セルには次の式を作って下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(J$1:J1)+1,"")) その後にG2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(COUNIF(J:J,ROW(A1))=0,AND(ROW(A1)>1,SUM(H$1:H1)>=60)),"",INDIRECT("A"&MATCH(ROW(A1),J:J,0))) H2セルへの入力の式は解答No2の通りです。

kawatetsu7
質問者

お礼

この度はご回答いただきありがとうございました。KURUMITO様にご教示いただきました内容がヒントとなりお蔭様でシートが完成するに至りました。心より感謝申し上げます。

その他の回答 (5)

回答No.6

>先週末にも同様の質問をさせていただきましたが、よく分からないことがありますので、再度質問させてください。 前回たくさん回答がつきましたが、どこがわからないかをきちんと明記してください。 >できればG列には1、2、3など順位を入力せずに、A列とB列を入力すると、G列とH列が抽出・積算されるような方法があると助かるのですが。ぜひご教示ください。 作業列がないと非常に複雑になります。本当に理解したいのなら段階的な手順を踏むべきです。それとも単に望む答えを手に入れたいだけなのでしょうか?

kawatetsu7
質問者

お礼

お世話になります。ご指摘に感謝いたします。 いただいた回答を私なりに考え、シートの完成を目指し、お蔭様で完成させることができました。ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

No.3です。 一部修正。 G2に入れる式は↓にしてください =IF(SUM(H$1:H1)=60,"",IF(MAX(G$1:G1)=MAX(A:A),"",SMALL(A:A,COUNTIF(A:A,"<="&G1)+1)))

kawatetsu7
質問者

お礼

mt2008様ご回答ありがとうございます。 他の方の回答も参考にさせていただき、シートの完成を目指したいと思います。ご協力に感謝申し上げます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

あまり綺麗ではありませんが、こんな感じでしょうか。 G1に =MIN(A:A) H1に =IF(SUMIF(A:A,G1,B:B)>60,60,SUMIF(A:A,G1,B:B)) G2に↓ =IF(SUM(H$1:H1)=60,"",IF(MAX(G$1:G1)=MAX(A:A),"",SMALL($A$1:$A$14,COUNTIF($A$1:$A$14,"<="&G1)+1))) H2に↓ =IF(G2="","",IF((SUM(H$1:H1)+SUMIF(A:A,G2,B:B))>60,60-SUM(H$1:H1),SUMIF(A:A,G2,B:B))) G2:H2を下までコピー

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

ごめんなさい。式を間違えていました。 =IF(G2="","",IF((SUMIF(A:A,G2,B:B)+SUM(G$1:G1))>60,60-SUM(H$1:H1),SUMIF(A:A,G2,B:B)))

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

A列に号がありB列に月があるとしてG列には1,2,3のように入力して号が、それぞれ2行目から、あるとしたらH2セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(G2="","",IF((SUMIF(A:A,G1,B:B)+SUM(G$1:G1))>60,60-SUM(H$1:H1),SUMIF(A:A,G1,B:B)))

kawatetsu7
質問者

補足

早速のご回答ありがとうございます。 すみません。できればG列には1、2、3など順位を入力せずに、A列とB列を入力すると、G列とH列が抽出・積算されるような方法があると助かるのですが。ぜひご教示ください。