• 締切済み

EXCEL VBA で値を順に足していき条件判定できますか?

A列を順に足していきB列に表示するだけなのですが 0が5回続いたら×を表示させA列に数値がでてきたら また、足していきます。VBAで可能でしょうか? 例)    A  B    0    0 0    1 1    2 3 ←1+2    3 6 ←3+3    4 10 ←6+4    5 15 ←10+5    0 ×    0 ×    0 ×    0 ×    0 ×    1 1    2 3    3 6    4 10    5 15    0 ×    0 ×    0 ×    0 ×    0 ×    1 1    2 3    3 6    4 10    5 15 以上、分かる方いましたら、教えてください。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

ANo.3です。 >スタートの数値が0の場合は、エラーとなるみたいです。 #1の補足にある例題でテストした所では、求めている結果の通りになりましたが。。。 エラーになったのであれば、その時のデータ・エラー発生の場所・エラー内容を提示して下さい。

v6600
質問者

補足

すみません。こちらの手違いでした。 申し訳ありません。 ほんとご親切にありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ANo.2です。 再トライ。 Sub test2() Dim kei As Integer Dim cnt As Integer Dim i As Long cnt = 1: kei = 0 For i = 2 To Range("A" & Rows.Count).End(xlUp).Row If Cells(i, 1).Value = 0 Then Cells(i, 2).Value = IIf(cnt = 5, "END", 0) cnt = IIf(cnt = 5, 1, cnt + 1) kei = IIf(Cells(i - 1, 2).Value = "END", kei, kei + Cells(i, 1).Value) kei = IIf(cnt = 5, 0, kei) Else kei = kei + Cells(i, 1).Value Cells(i, 2).Value = kei cnt = 1 End If Next End Sub こんな感じですか。

v6600
質問者

お礼

こんな感じです。完璧です。ありがとうございます。 ほんと助かりました。

v6600
質問者

補足

参考) スタートの数値が0の場合は、エラーとなるみたいです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

こうゆう感じの事でしょうか。 Sub test() Dim cnt As Integer Dim i As Long cnt = 1 For i = 2 To Range("A" & Rows.Count).End(xlUp).Row If Cells(i, 1).Value = 0 Then Cells(i, 2).Value = IIf(cnt = 5, "END", 0) cnt = IIf(cnt = 5, 1, cnt + 1) Else Cells(i, 2).Value = Cells(i - 1, 1).Value + Cells(i, 1).Value cnt = 1 End If Next End Sub 的はずれならごめんなさい。

v6600
質問者

補足

回答、ありがとうございます。 試してみたのですが、B列には、A列を順番たすのではなく、0,end以外は、そこまでのA列の合計値にしたいです。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

こんなことでしょうか。 Sub test() ri = 1 re = Range("A" & 65536).End(xlUp).Row s = 0 For r = ri To re If Cells(r, 1) = 0 Then i = i + 1 If i = 5 Then For j = r - 4 To r Cells(j, 2) = "x" Next i = 0 s = 0 Else Cells(r, 2) = 0 s = 0 End If Else i = 0 s = s + Cells(r, 1) Cells(r, 2) = s End If Next End Sub

v6600
質問者

補足

回答ありがとうございます。 早速試してみたのですが、5回のカウント以外にA列に0が でてきても、条件をみたすまでは、足していきたいです。 少し、例の配列を変えてみました。 わかりますでしょうか? 0 0 0 ←0+0=0 1 1 ←0+1=1 2 3 ←1+2=3 3 6 ←3+3=6 4 10 ←6+4=10 0 0 ←ここは0表示にしたい 0 0 ←ここは0表示にしたい 0 0 ←ここは0表示にしたい 0 0 ←ここは0表示にしたい 0 END ←0が5回出たので何か表示 1 1 ←0+1=1 0 1 ←1+0=1 3 4 ←1+3=4 4 8 ←4+4=8 0 0 ←ここは0表示にしたい 0 0 ←ここは0表示にしたい 0 0 ←ここは0表示にしたい 0 0 ←ここは0表示にしたい 0 END ←0が5回出たので何か表示 0 0 ←0+0=0 0 0 ←0+0=0 1 1 ←0+1=1

関連するQ&A