• ベストアンサー

VBAで文字列検索の方法

エクセルで実現したいVBAです。 セル内に入力されている文字列に任意の文字が含まれているかどうかを判定したいのです。 例えば, 「特別値引対応商品」と入力されているセルに 「値引」という文字が含まれているかどうか のチェックをしたいのです。 検索する文字列(上記の場合なら「値引」)は固定でかまわないのですが,どのようにすれば実現できるでしょうか。 関数を探してみたのですが,ないように思います・・・。

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

  • ベストアンサー
  • bubebube
  • ベストアンサー率55% (11/20)
回答No.3

Like関数もお勧めですよ。 「値引」がA1セルに存在した場合、メッセージを表示します。 If Sheet1.Range("A1").Value Like "*値引*" = True Then MsgBox "「値引」が含まれています" End If

その他の回答 (4)

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

既回答は、関数やセル総なめ法ですがVBAらしくFindを使ってみました。これは参考にしてください。 Sub test01() Range("a1").Select Range("a1:a10").Find(What:="中央", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .Activate a = ActiveCell.Row MsgBox ActiveCell.Row p01: If n = a Then GoTo p02 Range("a1:a10").FindNext(After:=ActiveCell).Activate '見つかった時の処理 MsgBox ActiveCell.Row n = ActiveCell.Row GoTo p01 p02: End Sub テストデータはA1:A7で 大阪市城東区 大阪市中央区 東京都中央区 京都市北区 東京都立川市 埼玉県越谷市 福岡市中央区 で2、3,7と表示します。 Findはぐるぐる回りするのでその防止策をとっています。 始めから見つからないケースの対策をとっていないので 勉強してください。時間がなくて済みません。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

こんにちは。maruru01です。 ワークシート関数でも出来ますよ。 FIND関数を使用します。 A1にデータが入っているとすると、 =IF(ISERROR(FIND("値引",A1)),"なし","あり") で、"値引"という文字列があれば「あり」、なければ「なし」と表示されます。 ワイルドカードを使用してあいまい検索をしたい場合は、SEARCH関数を使用して下さい。

noname#11856
noname#11856
回答No.2

InStr関数を調べてみてください。 以下、アクティブセル内に"値引"という文字が見つかったらセルを赤くするという例です。 If InStr(ActiveCell, "値引") > 0 Then ActiveCell.Interior.Color = RGB(255, 0, 0) End If

回答No.1

こんにちは IT_F = 0 For I = 1 To Len(Cells(1, 1)) If Mid(Cells(1, 1), I, 2) = "値引" Then IT_F = 1 Exit For End If Next I If IT_F = 1 Then MsgBox "一致しました。" Else MsgBox "一致しません。" End If こんな感じでどうでしょう? Cells(1, 1)は"A1"セルという意味です。 中の値には変数も使えます。 MID関数はCells(1, 1)の文字列のI番目から2文字の値を取得させています。 例えば"値引き"にするなら3文字なので Mid(Cells(1, 1), I, 3) = "値引き" に変えればいいですね。 わかりづらくてすいません。