- ベストアンサー
エクセルVBAでの文字中の文字の検索について
例えば A 1ながらやすだ物産 2やおい物産 3ながらおかだ物産 というデータに対して”ながら”を含む文字列があった場合 その行のC列に”ながら"と入力するような簡単、簡潔なVBAの書き方を おしえていただけないでしょうか、よろしくお願いします。 A B C 1ながらやすだ物産 ながら 2やおい物産 3ながらおかだ物産 ながら
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
関数でも出来ますけど、、、 対象範囲(例だと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
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 関数なら、単に、以下のようにすればよいのでは? =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 によっては、うまくいかないことがありますが、抜き出しスピードはひじょうに速いです。
お礼
ご回答ありがとうございます VBA中に関数を入れるやりかたもあるんですね、勉強になりました^^
- zenjee
- ベストアンサー率47% (50/106)
>関数だとどのようにやるのでしょうか? =IF(ISERROR(FIND("ながら",A1,1)),"",MID(A1,FIND("ながら",A1,1),3)) でいかがでしょうか
お礼
お返事ありがとうございます、勉強になりました^^
下ので、いけます。 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と思いますが・・
お礼
ありがとうございます 関数だとどのようにやるのでしょうか?あまりしらなくて^^;
お礼
ありがとうございます解決しそうです^^