VBA セルの文字列置換




セル内の文字列置換

セル内の文字列・値を置換する方法についての解説とサンプルコードです。

関数、メソッドなど
Range.Replace What:=, Replacement:=, LookAt:=

Rangeが置換するセル、Whatが置換対象の文字列、Replacementが置換後の文字列です。
Rangeにセルの範囲を指定した場合は一括での置き換え処理になります。
引数で大文字・小文字の区別、全角・半角の区別、置換え対象文字列の全体・部分一致の選択などが出来ます。

引数で指定した値はメソッド実行後にエクセル上での置換及び検索のダイアログボックスでも継続して反映されてしまいます。
Replaceメソッド、Findメソッド使用後はデフォルトの値に戻す処理の実行をするサンプルコードも掲載しています。(コード2参照

引数一覧
名前 説明 備考
What 置換対象文字列 Variant 必須
Replacement 置換後文字列 Variant 必須
LookAt 置き換え対象文字列の部分
or完全一致
xlWhole or
xlPart
規定値:xlPart
SearchOrder 列or行から検索 xlByColumns
xlByRows
規定値:xlByRows
MatchCase 大文字小文字の区別する
orしない
True or False 規定値:False
MatchByte 2Byteと1Byteの区別する
orしない
True or False 規定値:False
SearchFormat 書式の指定 規定値:False
ReplaceFormat 書式 規定値:False


コード1
選択セルのスペースを全角半角問わずに削除
Sub SampleReplace2()

    '半角スペース
    Selection.Replace What:=" ", Replacement:=""

    '全角スペース
    Selection.Replace What:=" ", Replacement:=""

End Sub


コード2
置換設定の初期化(デフォルトに変更)
Sub rReplaceTes2()
    '書式検索のクリアをする
    Application.FindFormat.Clear
    Application.ReplaceFormat.Clear
    
    '置換対象文字を省略してデフォルトの置換をする
    Selection.Replace What:="", Replacement:="", Lookat:=xlPart, _
    Searchorder:=xlByRows, MatchCase:=False, MatchByte:=False
End Sub
ダイアログボックス初期化の際の置換対象書式はSearchFormatではなくてFindFormatに指定します。


コード3

Sub rReplaceTes3()

    'セルA1にある文字列"DIV"を消す
    Range("a1").Replace what:="DIV", Replacement:="", lookat:=xlPart, MatchCase:=False

    'セルA1:C5にある文字列"span"を消す
    Range(Cells(1, 1), Cells(5, 3)).Replace what:="span", Replacement:="", lookat:=xlWhole
    
    'D,E列にある文字列"html"を消す
    Columns("d:e").Replace what:="html", Replacement:="", lookat:=xlPart

    '書式検索のクリアをする
    Application.FindFormat.Clear
    Application.ReplaceFormat.Clear
    
    '置換対象文字を省略してデフォルトの置換をする
    Selection.Replace What:="", Replacement:="", Lookat:=xlPart, _
    Searchorder:=xlByRows, MatchCase:=False, MatchByte:=False

End Sub


関連ページ
文字列置換[Replace]関数
文字列検索[Find]メソッド