|
▼コーヒー牛乳 さん:
こんにちは
ご自身で「オートフィルターを使うなり、配列を使うなり」と書いておられるように、
この処理ですと、「フィルターオプション」が最適ではないでしょうか。
たとえば G1から右に抽出したいタイトル(みかん や りんご)をいくつでも抽出したい順番に
記入しておきます。かりにG1とF1の2つに書いたとします。
(動的に、いくつあるかを判断できますがわかりやすくするために2つだけだとしましょう)
で、2003までなら データ->フィルターオプション、
2007以降ならデータメニューのフィルターグループの詳細設定。
でてきたダイアログで
リスト範囲(L) A:F
指定した範囲(O) を選んで 抽出範囲(T) に G1:H1
OK ボタン
これで、G列、F列に目的のものが抽出されます。
必要なら A:F列を削除してもよろしいですね。
★この一連の操作をマクロ記録しますと、コードが生成されます。
で、それとは別に、一般的なコード処理としては、アップされたコード、いささか改善の余地はありますね。
・ループ制御の中でGoToを使うのは感心しません。
・処理すべきセル等をSelectして、Selection.○○○ とするのも感心しません。
アップされたように1行目の値を判定して列削除するにしても、以下のようなコードにされるほうが
よろしいかと思います。
Sub Sample()
Dim maxCol As Long
Dim j As Long
'最終列番号の取得
maxCol = Range("A1").CurrentRegion.Columns.Count
' または
' maxCol = Cells(1, Columns.Count).End(xlToLeft).Column
' または
' maxCol = Range("A1").End(xlToRight).Column
For j = maxCol To 1 Step -1
Select Case Cells(1, j).Value
Case "りんご", "みかん"
Case Else
Columns(j).Delete
End Select
Next
End Sub
|
|