• ベストアンサー

エクセルVBAでの文字中の文字の検索について

例えば  A    1ながらやすだ物産 2やおい物産 3ながらおかだ物産 というデータに対して”ながら”を含む文字列があった場合 その行のC列に”ながら"と入力するような簡単、簡潔なVBAの書き方を おしえていただけないでしょうか、よろしくお願いします。   A      B     C 1ながらやすだ物産      ながら 2やおい物産          3ながらおかだ物産      ながら

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

関数でも出来ますけど、、、 対象範囲(例だとA1:A3)を選択してから実行します。 Sub test() For Each r In Selection  If InStr(1, r.Value, "ながら", vbTextCompare) > 0 Then    r.Offset(0, 3).Value = "ながら"  End If Next r End Sub

sha-penn
質問者

お礼

ありがとうございます解決しそうです^^

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 関数なら、単に、以下のようにすればよいのでは? =IF(ISERROR(FIND("ながら",A1)),"","ながら") VBAを使うほどではないような気がしますね。 だから、関数をそのまま当てはめてしまえばよいのではないでしょうか? Sub TestSample1()   Dim myAdd As String   myAdd = Selection.Address 'マウスで選択   Selection.Offset(, 3).Value = _   Evaluate("=IF(ISERROR(FIND(""ながら""," & myAdd & ")),"""",""ながら"")") End Sub なお、VBAのコードのほうは、5000件以上になると、Version によっては、うまくいかないことがありますが、抜き出しスピードはひじょうに速いです。

sha-penn
質問者

お礼

ご回答ありがとうございます VBA中に関数を入れるやりかたもあるんですね、勉強になりました^^

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.3

>関数だとどのようにやるのでしょうか? =IF(ISERROR(FIND("ながら",A1,1)),"",MID(A1,FIND("ながら",A1,1),3)) でいかがでしょうか

sha-penn
質問者

お礼

お返事ありがとうございます、勉強になりました^^

noname#27115
noname#27115
回答No.2

下ので、いけます。 Sub TEST() Dim i As Long Dim strName As String strName = "ながら" For i = 1 To Range("A65536").End(xlUp).Row If InStr(1, Cells(i, 1), strName) <> 0 Then Cells(i, 3) = strName End If Next i End Sub もっとも、VBAでなくて関数でもOKと思いますが・・

sha-penn
質問者

お礼

ありがとうございます 関数だとどのようにやるのでしょうか?あまりしらなくて^^;

関連するQ&A