• 締切済み

EXCEL VBAで列に任意の数字があるかを確認

EXCELのVBAを使用して、次を行いたいと思いますが、うまくいきません。 ①任意の列(下のB列)に任意の数字があるかを確認する ②ある場合、該当行を除き、ない場合は、そのまま。 例)A列   B列   りんご 100   みかん 150   りんご 120 上記のデータを任意の数字を「100」とした場合、 結果)A列   B列    みかん 150    りんご 120 にしたいと思います。 また、任意の数字を「200」とした場合、 結果)A列   B列    りんご 100    みかん 150    りんご 120 となります。 私なりに調べた結果、「InStr」と「AutoFilter」、「If ~ then ~ else」の組み合わせでできないかと思いましたが、うまくいきません。お手数をおかけしますが、ご教示のほどよろしくお願い申し上げます。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

VBAのコードをポストするのはやぶさかではないものの 求めている仕様がよくわからないのです。 >①任意の列(下のB列)に任意の数字があるかを確認する ある場合はB列、ある場合はD列といった具合に 数値のある列(確認する列)を利用者が指定するわけですが、 その指定方法は ・1行目がタイトル行で、その列名を指定する? ・何番目の列なのかを列番号(アルファベットor数値)を指定する? 更に、どのような手段で指定するか? ・適当なシートの適当なセルに予め指定する? ・チェックする列を予め選択しておく? ・指定するためのダイアログを表示して入力させる? ・VBAのソースコード内に書き込む? 続いて、 >②ある場合、該当行を除き、ない場合は、そのまま。 ・処理結果を新たなシートに書き出す? ・単にフィルターする? ・新たなブックに書き出す? といった具合に、処理結果をどのように作成すればいいのかを 明示してほしいのです。 それとも、該当しない場合は、 その旨のメッセージを表示してマクロから抜ければいいですか?

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.3

No.1の補足です。 フィルターで絞り込んで削除したい場合は、以下のサイトを参考にして試してみてください。 絞り込んだ結果の行を操作する http://officetanaka.net/excel/vba/tips/tips155d.htm

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問に書いている以外に、方法は((2)あたりが普通かな) (1)B列の各セルの値をその探す値と等しいかIFで判別し、該当ならその行削除。 ただし、データの存在する、最下行セルから上に向かって探索すること。 なぜだか、わかりますか?削除で行ポインターだ崩れるからです。 (2)VBAでという方には。Findメソッド利用でしょう。 Googleで「VBA Find」で照会すると、記事がたくさん出る。 自分で勉強してください。 回答コピーは良くないと思うから省略。 こちらは見つかった都度、その行を削除しても、おかしなことにならないと思うが。

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

> ②ある場合、該当行を除き、ない場合は、そのまま。 フィルターなのか削除なのか不明ですので必要な方で試してみてください。 フィルターをかけるだけの場合 Sub Test1() Dim Suuti As Long Suuti = 100 With Sheets("Sheet1") .Range("$A$1:$B$4").AutoFilter Field:=2, Criteria1:="<>" & Suuti End With End Sub 該当行を削除する場合 Sub Test2() Dim Suuti As Long Dim i As Long Suuti = 100 With Sheets("Sheet1") For i = .Cells(Rows.Count, "B").End(xlUp).Row To 2 Step -1 If .Cells(i, "B").Value = Suuti Then .Rows(i).Delete End If Next End With End Sub

関連するQ&A