エクセルで楽々校務

学校現場で使えるエクセルファイルや小技の紹介をしています。掘り出し物があるかもしれません。あと、今までの実践での疑問点もつぶやきます。

VBA:規則的な飛び飛びセルにoffsetで配列的にカウントを書き込む

学校で使う書類はだいたい行列数が決まっているものが多いので、動的な配列でなくてもだいたい片付きます。

ずっと配列で考えようとしていたのですが、offsetを変数にしてループさせると自由度が高まる気がしたので、備忘録として書いておきます。

f:id:exeladmin:20200725010323p:plain

こんな感じのことができます。2行3列飛びのセルに1000行までカウントを書き込みました。スピード的には問題ない速さで書き込めました。

for c~の行 と for r~ の行 を入れ替えるとカウント方向を変えられます。

なんとなくいろいろ応用がきくマクロだと思います。

以下、コードです。標準モジュールに書きました。

--------------------------------------------

Option Explicit

Sub ■規則的な飛び飛びセルにカウントを書き込む()

Dim r, c, i As Long
Dim rng As Range

Application.ScreenUpdating = False

For c = 0 To 12 Step 3   '列3飛び★
For r = 0 To 1000 Step 2 '行2飛び★
Set rng = Range("B2").offset(r, c) 'B2セルが起点'■offsetを変数

    'rng空白の場合カウント(★For行の入れ替えでカウント方向変えられる)
    If rng.Value = "" Then
        rng.Value = i + 1 'カウント
        rng.Interior.ColorIndex = 4 '緑       
        i = i + 1

    'rngを空白に戻す
    ElseIf rng.Value <> "" Then
        rng.Clear
    End If

Next
Next

Application.ScreenUpdating = True

End Sub

--------------------------------------------------

ちょっと面白いかなと思ったので書いてみました。

では、また(^^)/