• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのReplaceで使える「?」(ハテナ)は)

エクセルのReplaceで使える「?」(ハテナ)は

このQ&Aのポイント
  • エクセルのReplaceで使える「?」(ハテナ)は、ワイルドカードとして複数の文字に対応することができます。
  • また、「?」は文字列としても機能し、最後に「?」が付く場合はその部分が置換されます。
  • エクセルのReplaceを使用する際には、文字としての「?」とワイルドカードとしての「?」を区別する必要があります。

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

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

VBAの話だよね。 またエクセルのはなしだよね。 基本は http://excelwork.info/excel/cellreplace/ などを読めばわかる。 Replaceはメソッドで、「1つのセルの値」についての機能。 セル単位に見つかったかどうか(Whatの方の指定)を調べるときに使える。 ワイルドカードにある文字そのものを1文字の文字として見てほしいときは (エスケープするという。SQLの処理系では¥を付けて区別するのが多いが) エクセルVBAでは http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1240159837 のような記事がある。 http://stabucky.com/wp/archives/1841 チルダを使うようだ。 Findの例で、やってみた。 取り急ぎ、で第2該当分以降を探索するコードは省略している。 例データ  Sheet1にA1:A6  aa asd a?tr af*dfg dd?kio ad*fkl ーー Sub test01() Worksheets("Sheet1").Select Dim x As Object Set x = Cells.Find("~?k") MsgBox x.Address End Sub Find("~?k")の、チルダの直後のところを、*や?など、直前や後続文字など いろいろ変えてやってみてください。 Replaceでもうまく行くかやってみてください。 質問していることが解決すればよいが。

LOGDDBJKA
質問者

お礼

回答ありがとうございました。

その他の回答 (2)

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは ?自体を置換するには、 Range("a1").Value = "a??a" '文字1文字のワイルドカードなので変化無し Range("a1").Replace What:="a?a", Replacement:="abab" '?が置換される Range("a1").Replace What:="~?", Replacement:="b"

LOGDDBJKA
質問者

お礼

回答ありがとうございました。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

検索値に対しては、?を文字数分で指定文字数の文字列に、*だと文字数指定なしの文字列と見なしてに対応してくれますが、変換後の文字列指定に?や*を使ってもワイルドカードのような対応はしてくれません。

LOGDDBJKA
質問者

お礼

回答ありがとうございました。

関連するQ&A