• ベストアンサー

エクセル(Excel) ワイルドカード *(アスタリスク) 使用方法について。

 御力添え、お願いします。m(__)m 質問はエクセルにて、特定の文字が同じで、 含まれていれば"OK"としたいのですが、 自分なりに調べて、*(アスタリスク)が、 ワイルドカードで、使ってみたのですが↓ =IF(A1="*"&"B"&"*","OK","NO") と書いても結果が、"NO"になるのです。  A1には、「ABC」や「CCB」「BAKA」が入り、 全て"OK"としたいのです。  ?マークも対象文字位置が同じならOKと思い、 試しましたが、これもダメでした。  IF文に限定したわけでは、ないです。 他の方法でも、特定文字の有無から次を実行できる、 方法を御教授して頂きたいのです。  本当は、マクロ(VBA)の中で、使って行きたいので、 セルの直接入力とVBE入力とで、違いが有るのなら、 両方教えて貰えれば、幸いです。  文法などでは無く、単にexcelの設定ミスなのかも 知れませんが、自分なりに調べた結果 わかりませんでした。(ToT)  答えの説明は、私がバカなのでお手数になると、 思いますので文法(方法)だけでも構いません。 出来れば、わかり易く解説して貰えると、嬉しいです。 よろしく、お願いします。m(__)m

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>sheetの名前が「*重要*」なら…、 >If Active.Sheet.name.value like "*重要*" Then (私も元の質問と違ってきているような気がしますが・) アクティブシートの名前は、 ActiveSheet.name で得られるので アクティブシートの名前に重要が含まれるかどうかは If ActiveSheet.name like "*重要*" Then と書けます。 また別の方法で If instr(ActiveSheet.name,"重要") Then とか If instr(ActiveSheet.name,"重要")<>0 Then でも良いです。 >以前は、IF~ = "絶対重要"で、動いていました。 シート名が、"絶対重要" で一致するかどうか調べる場合には、 IF~ = "絶対重要" として一致しているかどうかを調べることができますが、 この時に'*' のようなワイルドカードを用いることはできません。 そのような場合に'='の代わりに Like 演算子を使います。

kakaci
質問者

お礼

 BLUEPIXY様、並びに imogasi様、 遅くなって、すみません。 御回答、ありがとうございました。m(__)m  当初からの質問がズレてるとのご指摘、 申し訳ごさいませんでした。m(__)m  適当に、サイトからのツギハギで作った モノだったので、そのレベルで答えがあっても 理解できないと思い、歪曲してお聞きしてました。 お手数をお掛けして、すみませんでした。 又、質問させて頂く事になると思いますが、 ひとまずは、解決です。\(^o^)/ ありがとうございました。m(__)m

その他の回答 (4)

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

#3です。お礼の >RengeやCellを使わないで、するにはどーすればよいでしょうか? この質問はエクセルに関数ことのようですし、A1とあるからセルの文字列のことのように思いました。そうすると「RengeやCellを使わないで」という意味が良くわかりません。 文字列 Like (パターン)がTRUEかFALSEの値を持ちます。 文字列はセルの値でなくても、シート名でも良いです。 IFではワイルドカードは直接使えないでしょう。 COUNTIFなら使えます。 VBAならWorksheetFunction.COUNTIFなら使えると思います。 質問の意味がところどころ捉えられなくて、回答できない状態です。 ーーー =IF(COUNTIF(A1,"*B*")>0,"OK","NO") こういうことをきいているのかな。

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

質問が出ているVBAについて Sub test01() For i = 1 To 10 x = Cells(i, "A").Value Like "*B*" If x = True Then Cells(i, "B") = "Y" Else Cells(i, "B") = "N" End If Next i End Sub A1:A10に下記文字列があるとする。 実行後は下記B列。 ASDBCV Y FGHD N BBRTE Y GHSR N BNDFX Y HJNMBB Y B Y bb N B B Y XBB Y LIKEは、VB(A)のLIKE演算子といわれるものです。 文字パターンに? * # [文字リスト] [!文字リスト] などが使えます。 指定した文字列が、文字パターンの条件と一致しているか調べることができる。 Accessの例ですが http://www.geocities.jp/cbc_vbnet/kisuhen/enzanshi.html のLIKE演算子を参照。 SQLなどでも同じようなものが使える。

kakaci
質問者

お礼

 imogasi様、御回答ありがとうございます。m(__)m  LIKE演算子とは、まったく知りませんでした。  ところで、本当に申し訳ないのですが、 先にも補足させて頂いた様に、RengeやCellを 使わないで、するにはどーすればよいでしょうか?  ○○が◇▲×なら→If~~like "*▲*" Then で、良いのでしょうか?下記では、シート名に しておりましたが、これがテキストが起動中ならに 変更した時も、同様の文法構成で良いのでしょうか?  できれば、=(イコール)"*▲*" Then の 形であれば分りやすくて、嬉しいのですが。(~_~;)  恐れ入りますが、もう暫く 御教授お願いします。m(__)m

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>VBA版がresult=…と有るのですが、私には理解不能です。 結果を何かに代入するのだと思って、そのように書きました。 別にサンプル以上の意味は無いです。 特に"OK","NO" の値が必要ないなら普通にif で If Range("A1").value like "*B*" Then 'B が含まれていた時の処理 Else 'B が含まれていない時の処理 End If とすればいいと思います。

kakaci
質問者

お礼

 再び早々と、ありがとうございます。m(__)m  そーですね、"代入"ですね。 数式で、考えてました。(~_~;)オハズカシイ。  ところで、申し訳ないのですが、 Range("A1")を使わずに、IF~~Thenの形で、 sheetの名前が「*重要*」なら…、 If Active.Sheet.name.value like "*重要*" Then なのでしょうか?←やってみたがダメでした。(;o;) すみません、どーすれば良いでしょうか…(ToT) 以前は、IF~ = "絶対重要"で、動いていました。 =(イコール)を用いたのが私には分り易いのですが、 ダメなのでしょうか?   度々で、本当に申し訳がないです。  宜しくお願いいたします。m(__)m

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

セルでの入力だと =IF(COUNTIF(A1, "*B*"),"OK","NO") でいいと思います VBAだと result=IIF(Range("A1").value like "*B*","OK","NO") でいいと思います。

kakaci
質問者

お礼

 BLUEPIXY様、早々の返信、 ありがとうございました。m(__)m    1週間悩んで、ここでも質問が低レベル過ぎて、 なかなか返信が無いものと思っていたので、 本当に、”感謝”です。m(__)m  あつかましいのですが、VBA版がresult=…と 有るのですが、私には理解不能です。すみません。  できれば、IF~~として貰えないでしょうか?  とある工程を実行後の動作で、実際にはセルは 使わないのです。(~_~;)(変更が僕には…、)  御時間が有る時で結構です。  宜しくお願い致します。m(__)m

関連するQ&A

  • エクセル *(アスタリスク)の使い方

    エクセルで*(アスタリスク)の使い方について教えてください AdvancedFilterでデータを抽出しようとしています (今回はvbaのコードについての質問ではありません) (フィルターオプションを利用してもいいです) Sub Adfilter1()   Range("A4:F10").AdvancedFilter _     Action:=xlFilterCopy, _     CriteriaRange:=Range("B1:B2"), _     CopyToRange:=Worksheets("Sheet2").Range("A1"), _     Unique:=False End Sub たとえば都道府県が入力されているとします (1)「山」と入力→「山」と完全一致:該当なし(山県はないから) (2)「山*」と入力→「山」で始まる:山口、山梨、山形が該当 (3)「*山」と入力→「山」で終わる:岡山、富山、和歌山が該当 (4)「*山*」と入力→「山」を含む:(2)(3)の結果が該当 と思っていました *(アスタリスク)のところには、“何でも良い単語が入る”という意味かと思っていたので しかし (1)(2)が同じ結果(山口、山梨、山形) (3)(4)が同じ結果(山口、山梨、山形、岡山、富山、和歌山) になりました フィルターオプションを使っても同じ結果になるのでvbaのせいではないと思います *(アスタリスク)というのは、そういうもんなのでしょうか? それなら、特定の文字から始まる場合と特定の文字を含む場合は検索できるかと思うのですが、 完全一致する場合の検索(上の例だと「山県」を検索)するというのはできないのでしょうか? よろしくお願いします

  • VBA 変数にアスタリスクが含んでるかどうか

    変数にアスタリスクが含んでるかどうかをIFステートメントで取得するには? Sub test() Dim mystr As String mystr = "*/" If mystr Like "*" Then MsgBox "mystrはアスタリスクを含んでます。" End If End Sub このようなことをしたい場合、 mystr = "*/" でも mystr = "/" でも、結局は*が、どの文字でも含まれると認識してしまいます。 変数にアスタリスクが含まれてるかどうかを判定する方法を教えてください。

  • エクセルの使用方法

    エクセルでA3~A10のセルの何処かに完了と文字が入力されれば、A1セルに〇を自動で入力する方法はないですか。A3~A10のセルに何も文字が入力されていない時にはA1セルは空白のまま

  • excel2003を使用しています。

    excel2003を使用しています。 やりたいことは、2つのセル内の文字を結合する際に改行したいのです。 例えば、A1セル:ABCDE A2セル:12345  A3セル(結果): ”ABCDE              12345” ”~”までがA3セルの内容です。 A1セルの文字列数は不特定で、A2セルは5文字限定(必ず5文字ある) できればA2セルも不特定でもできれば最高です。 また、A3にて一発結果でなくてもA4に一時的な結果を出し、 それからA3に結果を表示するでもかまいません。 ご存知の方、ご教授下さい。

  • パスワードのアスタリスク表示

    エクセルに読み取りパスワードをかける際に、パスワードボックスには「*****」で表示されるはずなのですが、 1台のパソコンでは普通に英数字で表示されてしまいます。 入力は半角英数でしています。 他のパソコンではちゃんとアスタリスクで表示されるのですが、1台だけその状態なのです。 パスワードが表示されていると困るので、アスタリスクで表示させたいんですが、何か方法はないでしょうか?? よろしくお願いします(>_<)

  • エクセルで文字の切り出し

    皆さんコンニチは ある特定の文字を切り出すのに苦労しています。    A列    B列   C列 1行 a1234    OK 2行 m4056    OK 3行 ay658    NO 4行 mr698    NO 上記のように、A列にデータがありB列には先頭文字が 「 a 」又は「 m 」の場合のみ「OK」を表示させる 関数を入力したいのですが、どのようにすればよいのでしょうか VLOOKUP関数も考えたのですが、データ量があまりにも多くて実用にならないと断念しました。 よろしくお願いいたします。 エクセル2000

  • EXCELのIF関数で質問です

    ある文字が含まれていれば、○を返すIF関数で *(アスタリスク)を使っているのに、FALSEになります。 なぜでしょう? ちなみに式は、A1のセルに「9月精算」と入力していて IF(A1="9月*","○","×")と入れると、9月という文字列が 含まれているのに"×"が返されます。 何が原因でしょうか?

  • 【Excel】 特定の語句が含まれる場合

    こんにちは。 Excelで、A1に文字列(例:「東京都」)が入力されます。 そのA1内に特定の文字列が含まれるか否か、 B1にその結果(例:「●」)を表示したいのですが、 どのような式になるでしょうか。 Excel2003 です。 よろしくお願いいたします。

  • Excel;特定の文字を含むセルを書き出す方法

    お世話になります。 あるExcelシートの2列×300行ぐらいの範囲のセル内に 文字が入っています。 セル内(例A23idokensi)に特定の文字(例:A23)を含んでいたら、 もしくはセルを抜き出す方法はあるでしょうか? やりたいことは、アトランダムに入力されているところから、 特定の文字を含んだセルだけ取り出して内容とセルの個数を 数えることです。

  • エクセルにある文章中で「○○を含む」の指定

    当方エクセル初心者です。 エクセルに取り込んだ文章中に「"」が入っていたら隣のセルに「c」を入れたいのです。 =IF(COUNTIF(A2,"*"*"),"c","") とやってみたのですが、上手くいきません。 アステリスクで挟まれているのが"だと駄目なのでしょうか? (アステリスクの中をaに変えたらできるようです) どなたか解決策を教えてください。 よろしくお願いします。