電子書籍の厳選無料作品が豊富!

エクセルで特定の列データを削除したいのですが
シンプルな形を教えてください
ちなみに今は以下のようなVBAを使っています。

Sub 特定の列を削除する()

For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(1, i) = "りんご" Then
Columns(i).Delete
End If
Next i

For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(1, i) = "みかん" Then
Columns(i).Delete
End If
Next i

For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(1, i) = "ばなな" Then
Columns(i).Delete
End If
Next i

End Sub

A 回答 (3件)

訂正です。



誤:なので「りんご」「みかん」「ばなな」を残したいなら

正:なので「りんご」「みかん」「ばなな」のいずれでもないものを残したいなら
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまくいきました。基本的な数学の知識が足りませんでした。

お礼日時:2009/09/16 13:11

>次に残したい列を選択するのに


>If Cells(1, i) <> "りんご" or Cells(1, i) <> "みかん" or Cells(1, i) <> "ばなな" Then
>としたのですが、うまくいきません

集合を考えてみましょう。
「りんごではない」または「みかんではない」または「ばななではない」
なら「りんご」は 「または『みかん』ではない」に合致します。
「みかん」「ばなな」も同様です。

なので「りんご」「みかん」「ばなな」を残したいなら
or でなく and とします。

そうすると
「りんごではない」かつ「みかんではない」かつ「ばななではない」
となり、3条件が合致するもの(「りんご」でも「みかん」でも「ばなな」でもない)が選択できます。
    • good
    • 0

For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1


If Cells(1, i) = "りんご" or Cells(1, i) = "みかん" or Cells(1, i) = "ばなな" Then
Columns(i).Delete
End If
Next i

にしてはいかがでしょう。

この回答への補足

ありがとうございました。
次に残したい列を選択するのに
If Cells(1, i) <> "りんご" or Cells(1, i) <> "みかん" or Cells(1, i) <> "ばなな" Then
としたのですが、うまくいきません
どこに問題があるか教えていただけないでしょうか。

補足日時:2009/09/16 10:48
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変参考になりました。

お礼日時:2009/09/15 23:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!