Excel VBAで同じような処理が続くと、コードが非常に長くなり、管理や修正が大変になることがあります。
今回は、「複数の列に同じ処理(数式コピー)を行うコード」をループで簡潔に書き直す方法をご紹介いたします。
実現したいこと
- 複数の列(AH列~BQ列)に対して、2行目の数式を最終行までコピーしたい
- 長くなってしまったコードをループ構文で短くシンプルにしたい
Before:1列ずつ処理していた冗長なコード
最初に書いていたコードは、各列ごとに1つずつ書いていたため非常に長くなっていました。
' 一部抜粋(実際は36列分)
ws.Range("AH2").Copy Destination:=ws.Range("AH3:AH" & lastRow)
ws.Range("AI2").Copy Destination:=ws.Range("AI3:AI" & lastRow)
ws.Range("AJ2").Copy Destination:=ws.Range("AJ3:AJ" & lastRow)
' 以下省略
この方法でも処理は実行されますが、列が多くなるほどメンテナンス性が悪化します。
After:Forループで簡潔に書き直したコード
以下のように、列番号を使ってループ処理を行うことで、コードが劇的に短く・わかりやすくなります。
Sub CopyFormulasDown()
Dim ws As Worksheet
Dim lastRow As Long
Dim col As Long
' ワークシートを指定
Set ws = ThisWorkbook.Sheets(1)
' 列Aの最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' AH列(列番号34)〜BQ列(列番号69)までをループで処理
If lastRow > 2 Then
For col = 34 To 69
ws.Cells(2, col).Copy Destination:=ws.Range(ws.Cells(3, col), ws.Cells(lastRow, col))
Next col
End If
End Sub
ポイント解説
ws.Cells(2, col):2行目のセル(数式元)Destination:=...:コピー先は3行目~最終行まで34〜69:Excelの列番号で、AH列 = 34,BQ列 = 69
補足:列番号を調べる方法
列番号は以下の方法で確認できます。
A = 1,B = 2,...,Z = 26AA = 27,AB = 28,...,AH = 34,BQ = 69
不明な場合は、以下のようなコードで確認も可能です。
MsgBox Columns("AH").Column ' → 34 と表示される
まとめ
VBAでの処理は、繰り返しの多い構文をループで置き換えることで、コードの可読性・保守性が大きく向上します。
- 同じ処理が並ぶときは列番号を使ったForループが効果的
- Excelでは**列名ではなく列番号(1〜16384)**を使うことで、動的に処理が可能
- コードの整理にもなり、ミスを減らすことができます
作業効率を高めるだけでなく、将来的な変更にも強いコードになりますので、ぜひご活用ください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
