Excelの累積を500ごとにリセットする方法は?

このQ&Aのポイント
  • Excel2007で数値を累積加算し、合計が500になったら次の行に合計を記入しリセットする方法を教えてください。
  • その際、合計が500に近い方のセルで区切るようにしたいです。
  • 関数やマクロを使用してもかまいません。ヒントをください。
回答を見る
  • ベストアンサー

Excel累積が規定数を超えたらまたゼロから累積

言葉でうまく説明できないゆえ検索もままならず,ここで質問させていただきます。お願いいたします。 Excel2007です。理想図を添付しましたので,それに従い説明いたします。 A列に数値が入っています。1000行ほどあります。 それらの数値を上から順にA1+A2+…と加算していき,500になったらその行のB列にその合計を記入し,一旦ゼロにリセットし次のA列の行(添付の図ではA6)からまた加算を始め,500になったらその行のB列に合計を記入し…ということを,A列の数値が終わるまで繰り返す,という作業を行いたいと思います。 また,合計数がちょうど500になることはまれなので,近似のセルをとるようにします。例えば添付画像において,A5の段階での合計は480で,A6になると635ですので,A5のほうが500に近いためそのセルで区切ります。 関数でもマクロでもかまいません。 何かしらのヒントでもいただければと存じます。 よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! VBAでの一例です。 データは1行目からあるとします。 Sub Sample1() Dim i As Long, myVal1, myVal2 Range("B:B").ClearContents For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row myVal1 = myVal1 + Cells(i, "A") myVal2 = myVal1 + Cells(i + 1, "A") If myVal1 <= 500 And myVal2 > 500 Then If 500 - myVal1 <= myVal2 - 500 Then Cells(i, "B") = myVal1 Else Cells(i + 1, "B") = myVal2 i = i + 1 End If myVal1 = 0 End If Next i End Sub こんな感じではどうでしょうか? ※ データが2行目以降にある場合は >For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row の「1」の部分を「2」に変更してみてください。m(_ _)m

moon-walker
質問者

お礼

ご回答,ありがとうございました。 きちんと動作し,結果につきましても最初の方と同じになりました。 VBAにつきましては,その都度調べながら調整している程度の知識しか持ち合わせませんので,今回のコードも大変参考になりました。ありがとうございました。 No1の回答者kagakusuki様も,質問後すぐに回答くださり,かつ正常に機能いたしました。どちらの方にも平等にお礼をしたいところでございますが,VBAによる操作のほうが,即座に実行が完了し,かつ操作後のファイルの軽さにも影響がでませんでしたので,tom04様の回答をベストアンサーに選びたいと思います。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 まず、A1セルから数値を入れるのではなく、 A1セル  項目名 A2セル  135 A3セル  85 A4セル  85 A5セル  30 A6セル  135 A7セル  155 の様に、A2セルから数値を入れる様にして下さい。  その上で、まず、A2セルに次の関数を入力して下さい。 =IF(ISNUMBER($A2),IF(OR(SUM(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+1,1)):$A3)>500,SUM(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+1,1)):$A2)=500),IF(ABS(SUM(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+1,1)):$A2)-500)>SUM(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+1,1)):$A3)-500,"",SUM(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+1,1)):$A2)),""),"")  そして、A2セルをコピーして、A3以下に貼り付けて下さい。

moon-walker
質問者

お礼

早々にありがとうございました。 思うとおりに機能して満足しております。大変助かりました。 (関数を入力するセルは,A2ではなくB2で,以降もB列に関数を入れてA列の数値の処理をしていけばいいのですね。)

関連するQ&A

  • Excel累積が規定数を超えたらまたゼロから累積

    マクロに関してご相談です。 A列に数値が入っています。1000行ほどあります。 それらの数値を上から順にA1+A2+…と加算していき,500以上になったらその行のB列にその合計を記入し,一旦ゼロにリセットし次のA列の行(添付の図ではA6)からまた加算を始め,500になったらその行のB列に合計を記入し…ということを,A列の数値が終わるまで繰り返す,という作業を行いたいと思います。 以前他の方の質問で下記の回答が掲載されていました。 VBAでの一例です。 データは1行目からあるとします。 Sub Sample1() Dim i As Long, myVal1, myVal2 Range("B:B").ClearContents For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row myVal1 = myVal1 + Cells(i, "A") myVal2 = myVal1 + Cells(i + 1, "A") If myVal1 <= 500 And myVal2 > 500 Then If 500 - myVal1 <= myVal2 - 500 Then Cells(i, "B") = myVal1 Else Cells(i + 1, "B") = myVal2 i = i + 1 End If myVal1 = 0 End If Next i End Sub この方の質問の場合、合計数がちょうど500になることはまれなので,近似のセルをとるようにするという条件がありました。 今回はこの近似の条件は不要で500を超えたら、ゼロから累積するようにしたいですが、マクロをどのように修正したらよいでしょうか。 何かしらのヒントでもいただければと存じます。 よろしくお願いいたします。

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • エクセル ある数が含まれる範囲を調べ、その隣のセルの数を取得する

    聞きたい内容がうまく説明できないので、具体例を書かせていただきます。 下のような表があり、それとは別に1つ数値を入れるセルと結果を表示するセルがあります。 入力セルに例えば105を入れたとき、105は101(A列)~110(B列)の間の数値なので、その行のC列の値である3を結果セルに表示させたいのですが、どのようにすればよいでしょうか。 A列   B列   C列 1 100 0 101 110 3 111 120 2 121 130 5 131 140 2 141 150 2 151 200 3 201 1000 0

  • エクセル2000で質問です。

    A列の5行目から13行目まで数値が入力されています。 これは月毎の昨年の実績です。 B列の5行目から今年の実績が入っています。 今のところB5のみ数値が入っています。 今後の運用としてB6、B7・・・と実績に応じて数値を入力して いきます。 セルB20にはB列の合計が入っているのですが、昨年対比する時に 仮にB6に数値が入った時点でA20にA5+A6の合計が入るように したいのですがA20にどのような式を入れればよいのでしょう?

  • エクセルの集計表で質問です。

        A     B     1  10000   日付 2  15000   日付 3  15000   日付 4  24000   日付 5 4月合計数値 という表があったとします。 まず、この表で"B1"のセルに4月の任意の日付を入力すると、横の"A1"の数値"10000"が"A5"に表示されます。 そして"B2"以降のセルに4月の日付が入力されるとその横の列Aの数値を"A5"に加算表示させるようにしたいのです。4月以外の日付は"A5"に加算表示させないようにします。 つまり、列Bに4月日付(例、『2003/4/25』)が入力された時のみ、その横の列Aの数値が"A5"に加算されていくようにしたいのです。 このような事を数式で実現する事は可能ですか? 可能ならば手段を教えて下さい。 説明が難しい・・・

  • エクセル2000 の使い方で・・・

    肥料の計算をしたいのですが・・・ ・・・・・・・・・・・B列 C列 D列 E列 ・・・・・・・・・・・重量 窒素 燐酸 加里 肥料A 1行目 〇〇 3.36 6.98 5.17 ・・・・・・2行目・・・・・□・・・□・・・□ 肥料B 3行目 〇〇 4.82 1.30 1.17 ・・・・・・ 4行目・・・・・□・・・□・・・□ 肥料C 5行目 〇〇 0.00 0.27 0.95 ・・・・・・ 6行目・・・・・□・・・□・・・□ ・・・・・・ 7行目・合計◎・・・◎・・・◎ 表のカンジが分かりづらいので、すみません。 CDEは窒素・燐酸・カリの成分(%)です。B列〇〇に重量を入力しますと、□に各成分量が出るようにしています。そして、三種類の肥料の、三要素の合計が◎に出るようにしています。 この合計が8-8-8 に近くなるように、三つの〇〇に数値をマニュアルで入れていますが、組み合わせはいろいろとあるようです。この数値の組み合わせが、自動的な計算とか、グラフ作りとか、とにかく一目瞭然に、8-8-8の近似値がなるような方法はありますでしょうか?

  • エクセル関数で・・・

    A列の1行目から45行目までに、”1”か”×”を入力するか、空白があります。 B列の1行目から45行目までに、様々な数値、若しくは空白が入ります。 この時、A列が”×”の行でB列が空白でないセルをカウントする数式を教えて下さい。   A  B 1 ×  20 2 × 3 1  30 4 ×  5 1  20 6 7 1  30 8 ×  10・・・・ こんな感じで、A列が”×”でB列が空白でないセルは『2』と導きたいのです。 分かりにくい説明で申し訳ありませんが、宜しくお願いいたします。

  • 再度、Excelの数式について、今朝

    再度、Excelの数式について、今朝 今朝、KURUMITO様から、下記1)~3)の条件での数式を親切に教えて頂きました。 教えて頂いた数式 =SUMPRODUCT(A4:A55,B4:B55)/H2 その後、条件が1)2)は同じですが、4)が増えたため3)が5)に変更になりました。 自分なりに次のように作ったのですが、エラーになります。=SUMPRODUCT(C4:C55="S")*(A4:A55,B4:B55)/H2 正しい数式を教えてください。バージョンは Excel2003 です、 宜しくお願いいたします。 1)A列 A4からA55まで、数字のデータが入ってるセルと、入ってないセルがあります。 2)B列もA列同様、B4からB55まで、数字のデータが入ってるセルと、入ってないセルがあります。(データの入ってる行は、A列で入っていれば、B列の同じ行に入っています)、 3)A列とB列のデータの入っている行を順番に4から55行まで、掛け算をして(例えば、A5*B5)、その4から55行まで合計を、H2に入っている、ほかの合計の数値で、割り算をする計算式をK2のセルに、一つにまとめて入れ、計算結果を表示したいのです。 4)C列もA列B列同様、C4からC55まで、B又はSの”文字のデータ”が入ってるセルと、入ってないセルがあります。(データの入ってる行は、C列(文字データ)で入っていれば、A列(数字データ)、B列(数字データ)の同じ行に入っています) 5)C列の”文字データ”がSならばA列とB列のデータの入っている行を順番に4から55行まで、掛け算をして(例えば、A5*B5)、その4から55行まで合計を、H2に入っている、ほかの合計の数値で、割り算をする計算式をK2のセルに、一つにまとめて入れ、計算結果を表示したいのです。

  • Excel 範囲内で条件を満たす異なる列の合計

    範囲内で条件を満たすセルで、異なる列の値を合計したい。 A1からA5に{10,20,30,40,50}という値が B1からB5に{0,1,2,3,4}という値が C1からC5に{5,6,7,8,9}入っている事とします。 A1:A5の範囲で複数の条件をつけます。 B列ではA列のセルの値が15<A<35となる、A2とA3と同じ行であるB2とB3の値 C列ではA列のセルの値が25<A<45となる、A3とA4と同じ行であるC3とC4の値 全部でB2,B3,C3,C4のセルの値を合計を返すセルを作成したい。 この場合目的のセルが返す値は1+2+7+8で18となる。 補助行を作ってでも構いませんので、このような加算が可能とするセルの作り方はないでしょうか。 Excel2000を使用しています。どうかよろしくお願いします。

  • Excelで最大値の求め方

    Excelで、A列とB列の4行目までに下記のように数値が入っています。 A列の最大値はA5セルに =MAX(A1:A4) と入力すれば求められます。 さらにB5セルに「A列最大値の行のB列の数値」を出力するにはどうすればよいのでしょうか?この例ではB5セルは1となります。 5 3 2 8 6 1 4 2 ご存知の方、教えてください。 よろしくお願いします。

専門家に質問してみよう