[[20260325162024]] 『選択したセル内数字の〇〇行上の数字+1をして連煤x(さと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『選択したセル内数字の〇〇行上の数字+1をして連番を付けたい』(さと)

セルの
L10 に 1
L41 に 2
L72 に 3 ←ここまで印刷1ページ目

L112 に 4
L143 に 5
L174 に 6 ←ここまで印刷2ページ目

L214 に 7 ・・・

上記のように行が+31→+31→+40→+31→+31→+40という間隔で
連番を振りたいのですが、
選択セル内数字の〇〇行上の数字+1というように入力することは可能でしょうか。
連番を入力するだけの空欄の行は無いです。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


参考

Option Explicit

Sub FillSequence()

    Dim i As Long
    Dim rowNum As Long
    Dim pageIndex As Long
    Dim posInPage As Integer
    Dim maxCount As Long

    ' 何番まで振りたいかを指定(例:30番まで)
    maxCount = 30

    For i = 1 To maxCount
        ' ページ番号(0から開始)とページ内での位置(0, 1, 2)を計算
        pageIndex = Int((i - 1) / 3)
        posInPage = (i - 1) Mod 3

        ' 行番号の計算
        Select Case posInPage
            Case 0: rowNum = 10 + (pageIndex * 102)
            Case 1: rowNum = 41 + (pageIndex * 102)
            Case 2: rowNum = 72 + (pageIndex * 102)
        End Select

        ' L列に入力
        Cells(rowNum, "L").Value = i
    Next i

End Sub

(稚拙) 2026/03/25(水) 16:51:58


Excel2024,365だったら数式で出来た(AIで作成)
下記の数式をL1セルに入力(L1から下は最終行まで空白にしておく)。
nが数値の最大値、一番下のROW関数内の範囲が展開する範囲

 =LET(
    start, 10,
    steps, {31, 31, 40},
    n, 200,
    targets, start +
        VSTACK(
            0,
            SCAN(
                0,
                SEQUENCE(n),
                LAMBDA(a, b, a + INDEX(steps, MOD(b - 1, 3) + 1))
            )
        ),
    IFERROR(XMATCH(ROW(L1:L1000), targets), "")
)
(abec) 2026/03/25(水) 17:08:23

稚拙様 abec様
ありがとうございます!非常に助かりました!
会社に毎回500番くらいまで根性入力させられるところでした!
(さと) 2026/03/25(水) 17:16:33

 >連番を入力するだけの空欄の行は無いです。
 これはどういう意味ですか?空欄の「列」の間違いですか?
 L列は、その一部に既に何かが入力されている、or、今後入力が予定されている 
 ということですか?
 それだとL1:L1000に展開されるような式は使えないのかもしれませんね。
 でも面白い計算でした。
(xyz) 2026/03/25(水) 17:50:49

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.