• 締切済み

簡単なVBA

エクセルで特定の列データを削除したいのですが シンプルな形を教えてください ちなみに今は以下のような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

みんなの回答

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.3

訂正です。 誤:なので「りんご」「みかん」「ばなな」を残したいなら 正:なので「りんご」「みかん」「ばなな」のいずれでもないものを残したいなら

popogoe
質問者

お礼

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

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.2

>次に残したい列を選択するのに >If Cells(1, i) <> "りんご" or Cells(1, i) <> "みかん" or Cells(1, i) <> "ばなな" Then >としたのですが、うまくいきません 集合を考えてみましょう。 「りんごではない」または「みかんではない」または「ばななではない」 なら「りんご」は 「または『みかん』ではない」に合致します。 「みかん」「ばなな」も同様です。 なので「りんご」「みかん」「ばなな」を残したいなら or でなく and とします。 そうすると 「りんごではない」かつ「みかんではない」かつ「ばななではない」 となり、3条件が合致するもの(「りんご」でも「みかん」でも「ばなな」でもない)が選択できます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

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 にしてはいかがでしょう。

popogoe
質問者

お礼

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

popogoe
質問者

補足

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