今、C列の3行目からスタートしまして。
3行目から46行目には「1」を入れまして。
47行目から90行目には「2」を入れます。
91行目から134行目には「3」を入れまして。
135行目から178行目には「4」を入れます。
・
・
・
と、このように3行目の1からスタートして、44行目毎に数値が1、プラスされていくように、セルに数値を入れていきたいのです。
これを12万行目辺りまで、うまく入力していきたいのですが。
オートフィルなどでうまくいくかな?と思ったのですが、どうしてもうまくいかず。
お知恵をお貸しいただけますと幸いです。
よろしくお願い致します。
式で表示させるなら
=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
下記のマクロを標準モジュールにはりつけて、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列でもC列でも、うまくいきました!
あ゙、思いっきり C列って書いてましたね orz
式で表示させるなら
=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
補足
式で値を表示させた場合、途中に行の挿入または削除を行うと
それ以降の行で隣接するセルとのヒモ付が変わってくる部分が出てきます。
ヒモ付が変わっては困る場合には、式で表示させず、VBAで値を埋め込んで下さい。
例
行 C列 D列
46 1 あああ
47 2 いいい
48 2 ううう
45行目を削除すると
↓
46 1 いいい
47 2 ううう
このように、C列の値は変わりませんが、それ以外の列の値は上にシフトするため、「いいい」と「1」が紐付いていたものが「2」に変わってしまします。
すべてうまくいきました!
いろいろな方法をご提示いただきまして、ありがとうございます(^O^)
補足
2018/04/20 08:59:10式で値を表示させた場合、途中に行の挿入または削除を行うと
それ以降の行で隣接するセルとのヒモ付が変わってくる部分が出てきます。
ヒモ付が変わっては困る場合には、式で表示させず、VBAで値を埋め込んで下さい。
例
行 C列 D列
46 1 あああ
47 2 いいい
48 2 ううう
45行目を削除すると
↓
46 1 いいい
47 2 ううう
このように、C列の値は変わりませんが、それ以外の列の値は上にシフトするため、「いいい」と「1」が紐付いていたものが「2」に変わってしまします。
すべてうまくいきました!
2018/04/22 09:51:11いろいろな方法をご提示いただきまして、ありがとうございます(^O^)