- 締切済み
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 以上、分かる方いましたら、教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- n-jun
- ベストアンサー率33% (959/2873)
ANo.3です。 >スタートの数値が0の場合は、エラーとなるみたいです。 #1の補足にある例題でテストした所では、求めている結果の通りになりましたが。。。 エラーになったのであれば、その時のデータ・エラー発生の場所・エラー内容を提示して下さい。
- n-jun
- ベストアンサー率33% (959/2873)
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 こんな感じですか。
お礼
こんな感じです。完璧です。ありがとうございます。 ほんと助かりました。
補足
参考) スタートの数値が0の場合は、エラーとなるみたいです。
- n-jun
- ベストアンサー率33% (959/2873)
こうゆう感じの事でしょうか。 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 的はずれならごめんなさい。
補足
回答、ありがとうございます。 試してみたのですが、B列には、A列を順番たすのではなく、0,end以外は、そこまでのA列の合計値にしたいです。
- okormazd
- ベストアンサー率50% (1224/2412)
こんなことでしょうか。 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
補足
回答ありがとうございます。 早速試してみたのですが、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
補足
すみません。こちらの手違いでした。 申し訳ありません。 ほんとご親切にありがとうございます。