• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:タイトル名で複数列を取得し、その列を削除するマクロ)

Excelマクロで複数列を削除する方法

このQ&Aのポイント
  • Excelのマクロを使用して、複数の列を削除する方法を調べています。
  • タイトル名で複数列を取得し、その列を削除するマクロを作成したいです。
  • 現在、1つの列を削除することはできますが、複数の列を削除する方法について分からないので、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.3

No1の訂正の訂正です。 If .Range("A1") = "" Then Exit Sub より Do の後に If buf(1, i) = "" Then Exit Do を追加の方が一覧で途中空きがあっても対応できるのでこちらのほうが良さそうです。

jojojo5k
質問者

お礼

ご丁寧にありがとうございました。 参考にさせていただき、結果を得ることができました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.2

No1はA1から花一覧がない場合エラーや長時間反応なしなどになりますので With ActiveSheet の後に If .Range("A1") = "" Then Exit Sub とでもしておいてください。

すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率66% (1747/2623)
回答No.1

1行目の花名一覧も検索対象でしたら Sub Test() Dim R As Range Dim i As Long, buf As Variant With ActiveSheet buf = .Range(.Cells(1, "A"), .Cells(1, Columns.Count).End(xlToLeft)) For i = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column Do Set R = .Range("A:ZZ").Find(What:=buf(1, i), LookAt:=xlWhole) If R Is Nothing Then Exit Do R.EntireColumn.Delete Shift:=xlToLeft Loop Next End With End Sub 1行目は対象にしないがA列の2行目からZZ列まで対象にする場合 Sub Test2() Dim R As Range Dim i As Long, buf As Variant Dim LastColumn As Long With ActiveSheet buf = .Range(.Cells(1, "A"), .Cells(1, Columns.Count).End(xlToLeft)) LastColumn = .Cells(1, Columns.Count).End(xlToLeft).Column For i = 1 To LastColumn Do Set R = .Range(.Cells(2, "A"), .Cells(Rows.Count, "ZZ")) _ .Find(What:=buf(1, i), LookAt:=xlWhole) If R Is Nothing Then Exit Do R.EntireColumn.Delete Shift:=xlToLeft Loop Next End With End Sub 1行目の花名一覧の右から(D1まで一覧があればE列から)検索する場合は .Cells(2, "A") を .Cells(2, LastColumn + 1) にしてください。

すると、全ての回答が全文表示されます。

関連するQ&A