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 = 26
AA = 27
,AB = 28
,...
,AH = 34
,BQ = 69
不明な場合は、以下のようなコードで確認も可能です。
MsgBox Columns("AH").Column ' → 34 と表示される
まとめ
VBAでの処理は、繰り返しの多い構文をループで置き換えることで、コードの可読性・保守性が大きく向上します。
- 同じ処理が並ぶときは列番号を使ったForループが効果的
- Excelでは**列名ではなく列番号(1〜16384)**を使うことで、動的に処理が可能
- コードの整理にもなり、ミスを減らすことができます
作業効率を高めるだけでなく、将来的な変更にも強いコードになりますので、ぜひご活用ください。
スクールの紹介
【アイデミー】AIを学んで一発逆転のキャリアチェンジ!
最後に宣伝をさせてください。
夢見るAIエンジニアへ、今こそ一歩を踏み出せ!
最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。
しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!
なぜこのサービスが選ばれるのか?その理由はこちら
- 初心者から上級者まで
完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。 - 徹底的な進捗管理
受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。 - 専属メンターによる徹底サポート
AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。 - 場所を選ばず学べるオンライン完結
東京以外の地域からも、気軽に学び始めることができます。
信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現
夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!