- ベストアンサー
ワイルドカードの使用可能性と条件分岐について
- 「ワイルドカードを使用して特定の検索値Aを条件分岐する方法」について質問しています
- コードの要点は、検索値Aの一部に特定の条件がある場合、変数jを固定して特定の行にデータをセットすることです
- 具体的な例として、検索値Aが「aaa300」や「bbb300」といった特定の文字列で終わる場合、変数jを固定して特定の行にデータをセットしたいと考えています
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 >。こういう使い方はできないのでしょうか。 If hensu = "*300" Then これは、ワイルドカードのように機能するのを期待しては、使えないでしょう。たとえ他の言語でも。 文字列*300と等しいか、になってしまう。 私もこの表現にワイルドカード的機能をもったらいいなと思ったこともない。 この意味は文章で表すと (1)文字列の末尾が「300」を含む (2)先頭以外で「300」を含む (3)途中を含めて「300」を含む のどれかのように解されるが、多分(1)だとすると Sub test01() i = 2 s = Cells(i, 1) If Right(s, 3) = "300" Then MsgBox "語尾が300です" Else MsgBox "語尾が300でありません" End If End End Sub で簡単です。 (2)などでは Sub test02() i = 2 s = Cells(i, 1) p = InStr(s, "300") If p <> 0 Then MsgBox "語句に300を含んでいます" Else MsgBox "語句に300を含んでいません" End If End End Sub 先頭以外という条件ならp>1を聞けばよい。 末尾なら、P=Len(s)-3が聞いてもよい。 ----- 別にLIKE演算子というのがある。 Sub teat03() Dim s As String i = 2 s = Cells(i, 2) s = "aas300" s = "aad300sss" If s Like "*300*" Then MsgBox "300を含みます" Else MsgBox "300を含みません" End If End Sub sをいろいろ変えてやってみてください、 http://www31.ocn.ne.jp/~heropa/vb122.htm http://littlegray.minidns.net/vbtomo/log/vbqanda/lg-bbs_vbqanda_log_35556-35611.html
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。 >ワイルドカードの利用のしかたが よくわからないということです。"*"とか"%"とかが 利用できるのか、・・・ A1:A10にテストとして asd sdfrt aaadfg hjk sdddf aaa xaaa ssd ssd aads をいれ Sub test01() Worksheets("sheet1").Activate x = Application.Match("aaa", Range("a1:a10"), 0) MsgBox x x = Application.Match("aaa*", Range("a1:a10"), 0) MsgBox x End Sub を実行すると、6と3がMsgBoxで返る。 Match関数は条件を満たす最初のものしか返さないと思う。 だから次々見つけるには、範囲を見つかった次からに変えて行かないと いけないと思う。 結果としてワイルドカードの*は使える。 エクセルの関数の本も調べたが、「照合の型を0と指定し、検査値が文字列である場合には、ワイルドカード文字が使えます。アスタリスクは任意の文字列をあらわし、疑問符は任意の1文字をあらわす。」という記述を確認しました。関数でできることがワークシート関数でできると即断ができませんが。 ご参考になれば。 やってみればある程度の結論はわかる問題なのだが、その先の何か疑問があるように思うがそれはどんなことでしょう。 質問(問題)の骨子の点の抽象化はやってもらえたが、実例が挙げてもらえず、全貌が捕らえられず残念。
お礼
ご回答ありがとうございます。 "hensu"をvariantとして下記の通り、記述しているの ですが、"300"で終わる項目を認識してくれない 状況です。こういう使い方はできないのでしょうか。 If hensu = "*300" Then j = 50
- imogasi
- ベストアンサー率27% (4737/17069)
前の質問もよくわからなかったが、この問題もよくわからない。 コードを皆さんにも、読解させるのでなく、したいことを、適切な例示をあげて、文章でも、記述してほしい。 自分のしたいことを自分のケースに過度にこだわらず、ストレートに記述するのでなく、質問のパターン化ができるはず。 それと自分では、過去の質問と密接に続いているのは当たり前ですが、自分以外の人にとっては、前の質問と関連付けよというのは無理で、各質問で完結するような質問の記述の努力を望みたい。
補足
ご指摘ありがとうございます。 簡潔に言うと、ワイルドカードの利用のしかたが よくわからないということです。"*"とか"%"とかが 利用できるのか、またどのように利用するのかが よくわかりません。
お礼
ご回答ありがとうございます。 likeを使うことで目的を達成できました! likeも試してはいたのですが間に"="を入れていた 為、うまくいかなかったようです。 説明不足でしたが、何度もご回答いただき 本当に助かりました。ありがとうございます。