• ベストアンサー

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を進める。 このあたりの処理がどうも分かりません。 処理の考え方をどうかご指南いただきたく、よろしくお願いします。

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

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.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 でもよいです。

mezzanine_jog
質問者

お礼

以下のように作ってみました。 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関数も初めて使うことが出来、とても勉強になりました。 ありがとうございました。

その他の回答 (3)

  • Wind-Sun
  • ベストアンサー率27% (36/132)
回答No.3

こんなんどうでしょう。 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プラスしてあげるところですかね。

mezzanine_jog
質問者

お礼

For文でこのように作れるのですね。 私も最初For文でやってみましたが、カウンターの進め方が分からずにいました。 他にも応用が効きそうですね。 ありがとうございました。

回答No.2

添付画像を参照のこと。

mezzanine_jog
質問者

お礼

Mod関数を使って、しかも余りで0を出さない方法なのですね。 とても参考になりました。 ありがとうございました。

  • f272
  • ベストアンサー率46% (8469/18132)
回答No.1

私ならこんな感じ 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

mezzanine_jog
質問者

お礼

Mod関数を使うというのがよいんですね。 分かりませんでした。 とても参考になりました。 ありがとうございました。