【VBAリファレンス|実務向け】実務で差がつく!Excelで連番を瞬時に振る「時短テクニック」と「VBA自動化」

スポンサーリンク

なぜ「連番作成」の効率化が重要なのか

実務において、見積書や顧客リスト、売上データを作成する際、必ずといっていいほど「No.」や「行番号」が必要になります。数百行、数千行あるデータに対して、マウスでドラッグして連番を振っていませんか?
この作業は単純ですが、手作業ではミスが起きやすく、何より時間がかかります。今回は、Excelの標準機能を使った「即効テクニック」と、業務効率を劇的に上げる「VBAによる自動化」の両面から解説します。

基礎知識:Excelの「フィルハンドル」とは

セルを選択した際、右下に表示される小さな黒い四角を「フィルハンドル」と呼びます。これをドラッグすることで数値を連続コピーできますが、実はダブルクリックするだけで、隣接する列のデータがある場所まで自動的に連番を埋めることができます。これが最も速い「一般機能」での解決策です。

実装/解決策:一般機能とVBAの使い分け

一般機能で十分な場合も多いですが、毎日同じフォーマットの表に連番を振るなら、VBAで「ボタン一つ」にするのがプロの流儀です。

1. 一般機能を使う場合
・連番の先頭セルに「1」、その下に「2」と入力します。
・2つのセルを選択し、右下のフィルハンドルをダブルクリックします。
・注意点:隣の列が空欄だと止まってしまうため、必ず隣にデータが詰まっている列があることを確認してください。

2. VBAを使う場合
VBAを使う最大のメリットは、「データ量が変わっても自動判定できること」です。

サンプルプログラム:最終行を自動取得して連番を振る

以下のコードは、A列のデータが存在する範囲に合わせて、B列に連番を自動入力するマクロです。

Sub AutoNumbering()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' 現在アクティブなシートを対象にする
    Set ws = ActiveSheet
    
    ' A列のデータの最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 2行目から最終行までループして連番を入力
    ' ここではB列に番号を振る設定です
    For i = 2 To lastRow
        ws.Cells(i, 2).Value = i - 1
    Next i
    
    MsgBox "連番の作成が完了しました!", vbInformation
End Sub

応用・注意点:現場でのトラブル回避

・「隣の列が途切れている」問題
実務でよくあるのが、途中に空白行があるケースです。一般機能のダブルクリックでは途中で止まってしまいます。VBAであれば、上記コードのように「最終行を固定的に取得」することで、途中に空欄があっても正確に最後まで連番を振ることが可能です。

・「削除」への対応
行を削除すると、手入力の番号はエラー(#REF!)になったり、番号が飛んでしまったりします。もし、行削除しても連番を保持したい場合は、VBAで値を「値として貼り付け」するか、あるいは関数(ROW関数など)をVBAでセルに書き込む設計にすることをお勧めします。

作業の目的に合わせて、今日からこのテクニックを使い分けてみてください。これだけで、毎日の細かなルーチンワークの負担が大きく減るはずです。

タイトルとURLをコピーしました