再度の補足です。
エクセルのマクロにはFor文だけでなく、DOループが用意されている
ようです。これを使えばもっと簡潔に記述できます。
Sub Macro2()
Dim i
i = 2 '探索開始列
Do
If Cells(1, i) <> "品目コード" And Cells(1, i) <> "手番" Then
Columns(i).Delete
Else
i = i + 1
End If
Loop Until Cells(1, i) = ""
End Sub
こんなんでどうでしょう?
1行目のセルの中身を見て空白セルなら終了。
そうでなければ、「品目コード」「手番」かチェックし違うなら列削除
削除した場合は、次の列が左へシフトしてるので、もう一度同じ列を
チェックするためにカウンター(i)を戻す(1引く)
この例では、抽出する列を10と仮定してループをまわしています。
Sub Macro1()
For i = 1 To 10
If Cells(1, i) = "" Then
Exit For
ElseIf Cells(1, i) <> "品目コード" And Cells(1, i) <> "手番" Then
Columns(i).Delete
i = i - 1
End If
Next i
End Sub
お礼
お礼が遅くなり大変申し訳ありません。 いろいろなやり方、大変参考になりました。 ありがとうございました!!