• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel累積が規定数を超えたらまたゼロから累積)

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

このQ&Aのポイント
  • Excel2007で数値を累積加算し、合計が500になったら次の行に合計を記入しリセットする方法を教えてください。
  • その際、合計が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

専門家に質問してみよう