人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelの列へ周期的に数字を入れていきたいです

今、C列の3行目からスタートしまして。

3行目から46行目には「1」を入れまして。
47行目から90行目には「2」を入れます。
91行目から134行目には「3」を入れまして。
135行目から178行目には「4」を入れます。



と、このように3行目の1からスタートして、44行目毎に数値が1、プラスされていくように、セルに数値を入れていきたいのです。
これを12万行目辺りまで、うまく入力していきたいのですが。

オートフィルなどでうまくいくかな?と思ったのですが、どうしてもうまくいかず。
お知恵をお貸しいただけますと幸いです。

よろしくお願い致します。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● smithy250
●200ポイント

=INT((ROW()-3)/44)+1


moon-fonduさんのコメント
変わりました!ありがとうございます(^^♪

2 ● a-kuma3
●200ポイント

下記のマクロを標準モジュールにはりつけて、insert_number サブルーチンを実行してください。

Sub insert_number()
 target_col = 1  ' A列
 last_row = 120000
 n = 1
 r = 3
 Do Until r > last_row
 For rr = r To r + 43
 Cells(rr, target_col).Value = n
 DoEvents
 Next
 r = r + 44
 n = n + 1
 Loop
End Sub

指定が無かったので、とりあえず A列を対象にしましたが、別の列であれば target_col を調整してください。
12万行あると、まあまあ時間がかかりますので、お茶でも淹れて待っててください。


a-kuma3さんのコメント
セルの式でやった場合には、その後、別のセルを修正したりしたときに、また再計算が走って固まっちゃうので、数字が埋まったら、列を選択して「形式を選択して貼り付け」で「値」を選んで式が入った列を書きつぶすと良いと思います。

moon-fonduさんのコメント
ありがとうございます、A列でもC列でも、うまくいきました!

a-kuma3さんのコメント
あ゙、思いっきり C列って書いてましたね orz

3 ● Z1000S
●600ポイント ベストアンサー

式で表示させるなら
=QUOTIENT(ROW()-3,44)+1

VBAで書き込むなら

Public Sub fillNumber()

 Const BEGIN_ROW As Long = 3
 Const END_ROW As Long = 120000
 Const FILL_COUNTS As Long = 44
 Const TARGET_COL As Long = 3
 Const TARGET_SHEET_NAME As String = "Sheet1"

 Dim n As Long
 Dim i As Long

 n = 1

 With ThisWorkbook.Worksheets(TARGET_SHEET_NAME)
 For i = BEGIN_ROW To END_ROW Step FILL_COUNTS
 .Range(.Cells(i, TARGET_COL), .Cells(i + FILL_COUNTS - 1, TARGET_COL)).Value = n

 n = n + 1
 Next i
 End With

End Sub

式をVBAで埋め込むなら

Sub fillNumber2()

 Const BEGIN_ROW As Long = 3
 Const END_ROW As Long = 120000
 Const FILL_COUNTS As Long = 44
 Const TARGET_COL As Long = 3
 Const TARGET_SHEET_NAME As String = "Sheet1"

 Dim lEndRow As Long

 lEndRow = ((END_ROW + FILL_COUNTS - 1) \ FILL_COUNTS) * FILL_COUNTS + BEGIN_ROW - 1

 With ThisWorkbook.Worksheets(TARGET_SHEET_NAME)
 .Range(.Cells(BEGIN_ROW, TARGET_COL), .Cells(lEndRow, TARGET_COL)).FormulaR1C1 = "=QUOTIENT(ROW()-3," & CStr(FILL_COUNTS) & ")+1"
 End With

End Sub

Z1000Sさんのコメント
補足 式で値を表示させた場合、途中に行の挿入または削除を行うと それ以降の行で隣接するセルとのヒモ付が変わってくる部分が出てきます。 ヒモ付が変わっては困る場合には、式で表示させず、VBAで値を埋め込んで下さい。 例 行 C列 D列 46 1 あああ 47 2 いいい 48 2 ううう 45行目を削除すると ↓ 46 1 いいい 47 2 ううう このように、C列の値は変わりませんが、それ以外の列の値は上にシフトするため、「いいい」と「1」が紐付いていたものが「2」に変わってしまします。

moon-fonduさんのコメント
すべてうまくいきました! いろいろな方法をご提示いただきまして、ありがとうございます(^O^)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ