- ベストアンサー
Excel VBA 同列内での入力の繰り返し処理
よろしくお願いします。 シートのA列の1行目から100行目に数字の1~10を繰り返し入力する処理の方法が分かりません。 出力としては下記のようになります。 A列 1 2 3 4 5 6 7 8 9 10 1 2 3 . . . . . . 8 9 10 単純に出来るだろうと思っていましたが、プログラムを作り始めてから悩んでいます。 10の次は1に戻るのですが、行カウンターは1個進みます。 ・入力値が10になったら次の値は1に戻る。 ・行は+1を進める。 このあたりの処理がどうも分かりません。 処理の考え方をどうかご指南いただきたく、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
行番号xを10で割った時の余り(mod)を考えてみて下さい。 x :1,2,3,4,5,6,7,8,9,10,11,12,.... ↓ x mod 10:1,2,3,4,5,6,7,8,9,0,1,2,... 0のところを10にすればうまくいきそうですよね。 もしくは行番号をxとすると、 ((x-1) mod 10 )+1 でもよいです。
その他の回答 (3)
- Wind-Sun
- ベストアンサー率27% (36/132)
こんなんどうでしょう。 Dim i As Integer,j As Integer For j = 1 To 100 For i = 1 To 10 Cells(j, 1) = i If i = 10 Then Exit For j = j + 1 Next i Next j For ...Nextの入れ子のシンプルなものですが、 ポイントは5行目のiが10になったら抜けるところと 6行目の行カウンターを1プラスしてあげるところですかね。
お礼
For文でこのように作れるのですね。 私も最初For文でやってみましたが、カウンターの進め方が分からずにいました。 他にも応用が効きそうですね。 ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- f272
- ベストアンサー率46% (8469/18132)
私ならこんな感じ Sub test() Dim aa(1 To 100, 1 To 1) For i = 1 To 100 aa(i, 1) = (i - 1) Mod 10 + 1 Next i Range("a1:a100") = aa End Sub
お礼
Mod関数を使うというのがよいんですね。 分かりませんでした。 とても参考になりました。 ありがとうございました。
お礼
以下のように作ってみました。 Dim i As Integer Dim k As Integer For k = 1 To 100 i = Cells(k, 1).Row Cells(k, 1) = ((i - 1) Mod 10) + 1 Next k こちらのほうがIf文を使わなくて済むのですっきりですね。 Mod関数も初めて使うことが出来、とても勉強になりました。 ありがとうございました。