- 締切済み
簡単な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
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Sinogi
- ベストアンサー率27% (72/260)
訂正です。 誤:なので「りんご」「みかん」「ばなな」を残したいなら 正:なので「りんご」「みかん」「ばなな」のいずれでもないものを残したいなら
- Sinogi
- ベストアンサー率27% (72/260)
>次に残したい列を選択するのに >If Cells(1, i) <> "りんご" or Cells(1, i) <> "みかん" or Cells(1, i) <> "ばなな" Then >としたのですが、うまくいきません 集合を考えてみましょう。 「りんごではない」または「みかんではない」または「ばななではない」 なら「りんご」は 「または『みかん』ではない」に合致します。 「みかん」「ばなな」も同様です。 なので「りんご」「みかん」「ばなな」を残したいなら or でなく and とします。 そうすると 「りんごではない」かつ「みかんではない」かつ「ばななではない」 となり、3条件が合致するもの(「りんご」でも「みかん」でも「ばなな」でもない)が選択できます。
- kmetu
- ベストアンサー率41% (562/1346)
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 としたのですが、うまくいきません どこに問題があるか教えていただけないでしょうか。
お礼
ありがとうございます。 うまくいきました。基本的な数学の知識が足りませんでした。