• ベストアンサー

VBA 特定の文字の検索方法

VBA初心者です。 c列に入力されている「01-」~「09-」までのうち 「02-」で始まるものを探し、その行のA・B・C列を削除し 上につめたいのですが、うまくいきません。 「02-」の後には何文字か入っています(例:02-AN003) 以下のように記述したのですが。。。 VBA初心者ですのでどなたかご教授下さい。 Sub sakujyo() Dim i As Long For i = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1 If Range("C" & i).Value = "02-*" Then Rows(i).Delete Shift:=xlUp Next i End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

  ●Like演算子を使う Sub sakujyo()  Dim i As Long  For i = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1   If Range("C" & i).Value Like "02-*" Then Rows(i).Delete  Next i End Sub ●Instr関数を使う If InStr(Range("C" & i).Value, "02-") > 0 Then Rows(i).Delete Shift:=xlUp  

kenta60
質問者

お礼

出来ました!  Like演算子ですね。 調べて理解しました。ありがとうございました。

その他の回答 (1)

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

>その行のA・B・C列を削除し,上につめたいのですが、うまくいきません 手操作でも出来ない原理的に出来ないことを書いていませんか。 A・B・C列しかないデータなのか。不用意にA・B・C列と書かないこと。 列の1部列と見てしまうよ。 ーー やり方のヒントは (1)C列1セルづつINSTR関数で聞いていって見つける (2)C列でFind、FindNextメソッドを使う。初心者には向かない。 (3)セルの値そっくりの文字列を探すのでなく「含む」になるようだが、Like演算子を使う。Googleでも検索して勉強のこと) >If Range("C" & i).Value = "02-*" は経験の無いものの、無茶なやり方。 Instr関数なら 例データ asder adfert asdcv で Sub test01() For i = 1 To 3 p = InStr(Cells(i, "A"), "er") MsgBox p Next i End Sub で可能。4,4,0になる。 >02-」で始まるものとは、先頭から02-なら、Left(Cells(i,"C"),3)="02-j"で良い。