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

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

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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
  • ベストアンサー率65% (1625/2467)
回答No.1

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

LOGDDBJKA
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Cells.Replace What:="*234

    このような事は出来ないのでしょうか? 「2345」で終わる文字列を検索して 「2345?」にしたいのですが Sub test() Cells.Replace What:="*2345", Replacement:="*2345?", LookAt:=xlWhole End Sub を実行すると「a12345」が「*2345?」になってしまいます。 お尻のみ完全一致で「2345」以前の文字列は変更せず 「a12345」を「a12345?」にするにはどうすれば良いでしょうか? 実際の置換妻帯データは 「5」と「?」が連続している訳ではないので Sub test() Cells.Replace What:="5", Replacement:="5?", LookAt:=xlPart End Sub は考えていません。

  • 半角の?を全角の?にVBAで置換する方法

    A1に「ありますか?」を入力して、 Sub test1() Range("a1").Value Replace(Range("a1").Value, "?", "?") End Sub なら、ハテナが全角になるのですが Sub test2() Range("a1").Replace What:="?", Replacement:="?", LookAt:=xlPart End Sub だと、??????になってしまいます。 前後のコードの関係で、test2の方法で置換したいのですが、どうすればいいでしょう? Replace関数ではなく、Replaceメソッドで?だけを全角にする方法を教えてください。

  • エクセルで置換リストを別ブックにおいたマクロを作りたい

    以下は同一ブック内の「置換」のワークシートに A列に検索文字 B列に置換文字 を書き、置換するマクロなのですが、これですと同一ブック内でしか作業できません。 このリストを別ファイル(例えば"Book2.xls"の"sheet1")に書き、別のファイル(例えば"Book1.xls")で実行するにはどうしたらよいでしょうか。 Sub 置換() For i = 1 To Worksheets("置換").Range("A65536").End(xlUp).Row Cells.Replace What:=Worksheets("置換").Range("A" & i).Value, _ Replacement:=Worksheets("置換").Range("B" & i).Value, _ LookAt:=xlPart, SearchOrder:=xlByColumns Next End Sub

  • Excel VBA で 選択セルの一部を置換

    こんにちは。お願いします。 選択セルの文字列の右端が"号"、"番地"、"番"だったときに、それを消す、というマクロを作ろうとして、以下のようになりました。 Sub adrconv() Dim c For Each c In Selection If Right(c.Value, 1) = "号" Or Right(c.Value, 2) = "番地" Or Right(c.Value, 1) = "番" Then c.Replace what:="号", replacement:="", lookat:=xlPart c.Replace what:="番地", replacement:="", lookat:=xlPart c.Replace what:="番", replacement:="", lookat:=xlPart End If Next c End Sub お気づきかもしれませんが、これでは右端の"番"だけでなくどの"番"も消えてしまうのです。 右端の文字のみ消す方法をご教示願います。 よろしくお願いいたします。

  • Replace関数ですか?Replaceメソッドで

    VBAの基本的な質問なのですが ************************************* Sub test() Cells.Replace What:="あああ", Replacement:="いいい" End Sub ************************************* の「Replace」は、 Replace関数ですか? Replaceメソッドですか? オブジェクトブラウザで確認すると ************************************* Excel.Range のメンバ VBA.Strings のメンバ Office.TextRange2 のメンバ Excel.WorksheetFunction のメンバ ************************************* のReplaceがあるのですが 例のReplaceはどれに該当するか教えてください。 ご回答よろしくお願いします。

  • エクセルで置換リストを別ブックにおいたマクロを作りたい

    置換専用につくったワークシートに A列に検索文字 B列に置換文字を入力したリスト(例えば"Book2.xls"の"sheet1")を作りました。 このリストを使って別のブック内(例えば"Book1.xls")の複数のシート内を一括して置換えがしたいです。 自分で調べてみて下記で置換えはできたのですが、その都度、各シートを選択しなければだめでした。 一括で同ブック内の複数シート内を置換えさせるには、どこを修正したらいいのでしょうか? 見よう見まねの初心者です。 どうぞよろしくお願いします。 Sub 置換()  With ThisWorkbook   If ActiveSheet Is .Worksheets(1) Then Exit Sub   For i = 1 To .Worksheets(1).Range("A65536").End(xlUp).Row    ActiveSheet.Cells.Replace _      What:=.Worksheets(1).Range("A" & i).Value, _      Replacement:=.Worksheets(1).Range("B" & i).Value, _      LookAt:=xlPart, SearchOrder:=xlByColumns   Next  End With End Sub

  • エクセル マクロ REPLACEMENT

    エクセル2010を使っています。 置換をマクロでやろうと次のような文を見つけました。 Sub データ_ボタン2_Click() Range("g2:g1000").Select With Selection .Replace What:=注 , Replacement:="", LookAt:=xlWhole End With End Sub ボタン押下後、セレクトまではやっているのですが置換してくれません、どこがいけないのでしょうか? また正しくはどうしたら良いでしょうか? やりたいのは、G列の 注半角スペースの二文字を削除したいと思っています。 くわしい方、よろしくお願いします。

  • 例題を繰り返しマクロで記述したい

    ネットや本でマクロを作成しているいて、あまりマクロの意味も分からず作成しています。 下記のマクロの記述を繰り返しマクロで記述したいので、御指導願います。(H列で終わっていますが、できれば隣のセルが空白になるまで繰り返すようにしたい。) あと、自分の欲しい内容に修正出来るように、記述の意味などもコメントして頂けたら嬉しいのですが・・・。よろしくお願いします。 Sub 最終履歴を表示する(2)() Range("C4").NumberFormatLocal = "G/標準" Range("C4").Value = Application.WorksheetFunction.Max(Range("C6:C10000")) Range("C4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("C4").NumberFormatLocal = "yyyy/m/d;@" Range("D4").NumberFormatLocal = "G/標準" Range("D4").Value = Application.WorksheetFunction.Max(Range("D6:D10000")) Range("D4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("D4").NumberFormatLocal = "yyyy/m/d;@" Range("E4").NumberFormatLocal = "G/標準" Range("E4").Value = Application.WorksheetFunction.Max(Range("E6:E10000")) Range("E4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("E4").NumberFormatLocal = "yyyy/m/d;@" Range("F4").NumberFormatLocal = "G/標準" Range("F4").Value = Application.WorksheetFunction.Max(Range("F6:F10000")) Range("F4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("F4").NumberFormatLocal = "yyyy/m/d;@" Range("G4").NumberFormatLocal = "G/標準" Range("G4").Value = Application.WorksheetFunction.Max(Range("G6:G10000")) Range("G4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("G4").NumberFormatLocal = "yyyy/m/d;@" Range("H4").NumberFormatLocal = "G/標準" Range("H4").Value = Application.WorksheetFunction.Max(Range("H6:H10000")) Range("H4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole Range("H4").NumberFormatLocal = "yyyy/m/d;@" End Sub

  • Excel マクロ 添削お願いします

    まず下記マクロをご参照下さい Sub 置換() Range("D9:D195").Select Selection.Replace What:="D1", Replacement:="D2", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False Range("D9").Select End Sub D9からD195を選択して、文字列の置換をマクロで行うつもりで この時置換の対象は D1セルの文字列→D2セルの文字列 で 日々D2には違う文字列が入ります またD9からD195には参照式が入っており、その参照先を置換で切り替えたいのです マクロの記録を基に作ったのですが 思うように動いてくれませんでした 何がいけないのでしょうか? Excel2000 XP です よろしくお願いします

  • エクセル(2003) 「1900/1/0」を消したい

    セルA1に0を入力し 書式設定で日付→yyyy/m/dを選択しました。 しかし下記のマクロ実行しても 0が空白になりません。 Sub 日付置換() Cells.Replace what:="1900/1/0", Replacement:="", LookAt:=xlPart Cells.Replace what:="00/01/00", Replacement:="", LookAt:=xlPart Cells.Replace what:="0", Replacement:="", LookAt:=xlWhole End Sub なら最初から0なんか入力しなきゃいいじゃん。 と思われるかもしれませんが これはCSVファイルで出力したもので 最初から0の数値にも書式設定がかかってて「1900/1/0」となっています。 「1900/1/0」のデータをなくしたいのですが どんな方法がありますか? データ量が多いためマクロなどで一度に行ないたいです。 アドバイスよろしくお願いします。

専門家に質問してみよう