この記事では【Excel】VBAマクロで列削除(複数や条件式に合う列、左に詰める、連続)【Delete、For Each、If】、について解説していきます。
ポイントとしては、
`Delete`メソッド、
`For Each`ループ、
`If`文
を使用することです。
初心者でも理解しやすいように、変数名を少々変わった名称(日本語のローマ字表記)にしていますので、実際に使う際は適切な変数名に変更してください。
それでは、詳しく見ていきましょう!
VBAマクロで列削除を連続でする方法(BからF列まで、複数列、左に詰める)
それではまず、VBAマクロで列削除を連続でする方法について解説していきます。
このコードで、特定の範囲の列を一度に削除し、データを効率的に整理することができます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub RetusuSakujo()
' B列からF列までを削除するマクロ
Columns("B:F").Delete Shift:=xlToLeft
End Sub
コードのAlt+F8を押し、マクロ選択画面でRetusuSakujo関数を実行します。
このコードは、B列からF列まで、つまり5列を一度に削除します。
`Delete`メソッドを使用し、`Shift:=xlToLeft`パラメータによって、削除した列の右側にあるデータが自動的に左に詰められます。
VBAマクロで列削除を条件に従い連続でする方法(C列を先頭に3列おきに消す)
続いては、VBAマクロで列削除を条件に従い連続でする方法について解説していきます。
この方法では、特定の条件(ここではC列を起点に3列おき、最終列を12としておく)に基づいて列を削除します。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub JokenRetsuSakujo()
Dim i As Integer
' 12列目から始めて、3列おきに列を削除する
For i = 12 To 3 Step -3
Columns(i).Delete Shift:=xlToLeft
Next i
End Sub
コードのAlt+F8を押し、マクロ選択画面でJokenRetsuSakujo関数を実行します。
このコードは、forループと条件を組み合わせることで、C列を先頭に3列おきにExcelの列を削除します。
ループは右から左へと進むため、`Step -3`を指定しています。
左から列削除すると、詰まってしまって消したい列番号がずれるため。
VBAマクロで列削除を条件に従い連続でする方法(列方向で「マントヒヒ」の文字列があればその列削除)
最後に、列方向で特定の文字列(この例では「マントヒヒ」)が含まれている場合に、その列を削除する方法を見ていきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub MojiRetsuSakujo()
Dim retsu As Range
Dim moji As String
moji = "マントヒヒ"
For Each retsu In ActiveSheet.UsedRange.Columns
If InStr(1, retsu.Cells(1, 1).Value, moji) > 0 Then
retsu.Delete Shift:=xlToLeft
End If
Next retsu
End Sub
コードのAlt+F8を押し、マクロ選択画面でMojiRetsuSakujo関数を実行します。
このコードでは、`For Each`ループを使用してシート内のすべての列を順番に検査し、指定された文字列が含まれているかどうかをチェックします。
`InStr`関数を用いて文字列の存在を確認し、該当する列が見つかれば削除するコードになっています。
まとめ VBAマクロで列削除(複条件式、左に詰める、連続)【Delete、For Each、If】
ここでは、【Excel】VBAマクロで列削除(複数や条件式に合う列、左に詰める、連続)【Delete、For Each、If】について解説しました。
マクロをマスターして、さらに快適に過ごしていきましょう。