【2026年7月最新】VBAのReplace関数とReplaceメソッドを完全マスター|文字列置換・改行削除・大文字小文字区別・正規表現・複数条件置換まで実践コード集

【2026年7月最新】VBAのReplace関数とReplaceメソッドを完全マスター|文字列置換・改行削除・大文字小文字区別・正規表現・複数条件置換まで実践コード集

「Excelから取り込んだデータに余分な改行が混じっている」「文字列を大文字小文字関係なく置換したい」「複数の言葉を一括で別の言葉に変えたい」——VBAの文字列置換ではさまざまなニーズが発生します。

VBAで文字列を置換するにはReplace関数(変数内の文字列を置換)とRange.Replaceメソッド(セル内のテキストを置換)の2種類があります。この記事では改行削除・大文字小文字区別なし・正規表現・複数条件一括置換まで実践コードを完全解説します。

代表菅澤 代表菅澤
「Excelに貼り付けた文章に改行が混じっていてデータとして使えない」「お客様名の表記ゆれ(株式会社 vs 株))を全部統一したい」——こうした文字列の整理作業にVBAのReplace関数は非常に有効です。Claude Codeを使えば置換条件を日本語で伝えるだけでコードが完成します。
AI鬼管理山崎 AI鬼管理山崎
Replace関数とReplaceメソッドは名前が似ていますが役割が異なります。Replace関数はVBAの文字列変数内の置換、ReplaceメソッドはExcelシートのセル内テキストの置換です。使い分けのポイントをこの記事で整理します。
✔️Replace関数の基本構文(expression・find・replace・compareの全パラメータ)が分かる
✔️改行・タブ・全角スペースなどの特殊文字を削除・置換できる
✔️vbTextCompareで大文字小文字を区別しない置換ができる
✔️RegExpオブジェクトを使った正規表現による高度な置換が書ける
✔️Dictionaryループで複数キーワードを一括置換できる
✔️Range.ReplaceメソッドでExcelセル内の文字列を検索・置換できる
✔️Claude CodeでVBA文字列置換コードを日本語指示で自動生成できる
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】VBAのReplace関数とReplaceメソッドを完全マスター|文字列置換・改行削除・大文字小文字区別・正規表現・複数条件置換まで実践コード集
VBAのReplace関数とReplaceメソッドを完全解説。文字列置換の基本・改行コードvbCrLf削除・大文字小文字区別(vbTextCompare)・正規表現・複数条件の一括置換・セル内文字列置換(Range.Replace)まで実践コード付きで解説します。

01 Replace関数の基本構文と使い方 必須パラメータと省略可能パラメータの意味を完全解説

VBAのReplace関数は、文字列変数内の指定した文字を別の文字に置き換えて、新しい文字列を返す関数です。元の変数そのものは変わらず、置換後の文字列が戻り値として返ります。

📚 用語解説

Replace関数(VBA):VBAで文字列内の指定した部分文字列を別の文字列に置き換える関数。「Replace(expression, find, replace)」の形式で使います。「expression」が対象の文字列、「find」が置換したい文字列、「replace」が置き換え後の文字列です。Excelの「検索と置換(Ctrl+H)」のVBA版と理解すると分かりやすいです。オプションパラメータ「start」「count」「compare」で置換の細かい制御ができます。

'--- Replace関数の構文 --- 'Replace(expression, find, replace[, start[, count[, compare]]]) Sub ReplaceBasic() Dim str As String str = "株式会社サンプル 東京都千代田区" '基本的な置換: "東京都" を "大阪府" に変える Dim result As String result = Replace(str, "東京都", "大阪府") Debug.Print result '-> "株式会社サンプル 大阪府千代田区" '文字を削除(置換先を空にする) result = Replace(str, "株式会社", "") Debug.Print result '-> "サンプル 東京都千代田区" 'countで置換する個数を制限(最初の1個だけ) Dim str2 As String str2 = "aaa bbb aaa ccc aaa" result = Replace(str2, "aaa", "XXX", 1, 1) 'count=1: 最初の1個だけ置換 Debug.Print result '-> "XXX bbb aaa ccc aaa" End Sub
パラメータ必須説明
expressionString必須置換対象の文字列(変数またはリテラル)
findString必須検索する文字列(この文字列を置換する)
replaceString必須置き換える文字列(""で削除になる)
startLong省略可検索開始位置(デフォルト1=先頭から)
countLong省略可置換する最大個数(デフォルト-1=全て)
compare定数省略可vbBinaryCompare(区別)またはvbTextCompare(無視)

02 改行コード・タブ・特殊文字を削除・置換する vbCrLf・vbLf・vbTab・全角スペースの処理コード

Excelに外部データを取り込んだとき、文字列に改行コードやタブが混じっていることがあります。Replace関数とVBA定数を組み合わせて特殊文字を削除・置換できます。

📚 用語解説

改行コード(vbCrLf・vbLf・vbCr):VBAで改行文字を表す定数。vbCrLf(CR+LF、Windowsの改行)・vbLf(LF、Unixの改行)・vbCr(CR、MacOS旧バージョンの改行)の3種類があります。Excelのセルにコピペした文章に改行が混じっている場合、ReplaceでこれらをすべてSpace("")や半角スペースに置換することで、一行の文字列として整形できます。データ取り込み時の前処理でよく使われるテクニックです。

Sub RemoveSpecialChars() Dim str As String str = "東京" & vbCrLf & "大阪" & vbLf & "名古屋" '改行混じりの文字列 'Windows改行(CR+LF)を削除 str = Replace(str, vbCrLf, "") 'Unix改行(LF)を削除 str = Replace(str, vbLf, "") 'Mac改行(CR)を削除 str = Replace(str, vbCr, "") 'タブ文字を半角スペースに変換 str = Replace(str, vbTab, " ") '全角スペースを半角スペースに変換 str = Replace(str, " ", " ") '「 」は全角スペース Debug.Print str '-> "東京大阪名古屋" End Sub '--- セル範囲の全セルから改行を削除する(シートデータ整形用)--- Sub RemoveNewlinesFromRange() Dim cell As Range For Each cell In Range("A1:A100") If cell.Value <> "" Then cell.Value = Replace(Replace(Replace(_ CStr(cell.Value), vbCrLf, ""), vbLf, ""), vbCr, "") End If Next cell End Sub

03 大文字小文字を区別しない置換(vbTextCompare) compareパラメータでAとaを同一視して置換する方法

デフォルトのReplace関数は大文字・小文字を区別します("A"と"a"は別扱い)。compare:=vbTextCompareを指定すると大文字小文字を無視して置換できます。

📚 用語解説

vbTextCompare / vbBinaryCompare:VBAのReplace関数・InStr関数などの比較モードを指定する定数。vbTextCompare(値=1)は大文字小文字・全角半角を同一視する「テキスト比較」です。vbBinaryCompare(値=0・デフォルト)は文字コードで完全一致する「バイナリ比較」で、"A"と"a"は別の文字として扱います。英語の固有名詞や型番の表記ゆれを統一したい場合はvbTextCompareを使います。

Sub ReplaceCaseInsensitive() Dim str As String str = "Apple apple APPLE APple" '--- デフォルト(大文字小文字区別あり)--- Dim r1 As String r1 = Replace(str, "apple", "Mango") Debug.Print r1 '-> "Apple Mango APPLE APple" (小文字のappleだけ置換) '--- vbTextCompare: 大文字小文字を区別しない --- Dim r2 As String r2 = Replace(str, "apple", "Mango", 1, -1, vbTextCompare) Debug.Print r2 '-> "Mango Mango Mango Mango" (全て置換) End Sub
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 正規表現を使った高度な文字列置換(RegExp) RegExpオブジェクトでパターンマッチング置換を実装する

Replace関数では固定の文字列しか検索できませんが、VBAのRegExpオブジェクトを使うと正規表現によるパターンマッチング置換が可能になります。「数字を全て削除」「メールアドレスをマスク」などの複雑な置換に使います。

📚 用語解説

RegExpオブジェクト(VBA):VBAで正規表現を使うためのオブジェクト。「Dim re As Object: Set re = CreateObject("VBScript.RegExp")」で作成します。Patternで検索パターン(正規表現)を設定し、ReplaceメソッドやTestメソッドで検索・置換・判定ができます。VBAの参照設定で「Microsoft VBScript Regular Expressions」を追加すると早期バインディングで使えますが、CreateObject()を使った遅延バインディングでも動作します。

Sub RegexReplaceExample() Dim re As Object Set re = CreateObject("VBScript.RegExp") re.Global = True '全件マッチ(Falseだと最初の1件のみ) '--- パターン1: 全ての数字を削除 --- Dim str1 As String str1 = "注文番号:12345 商品コード:A678" re.Pattern = "\d+" '\d=数字1文字 +=1文字以上 Debug.Print re.Replace(str1, "") '-> "注文番号: 商品コード:A" '--- パターン2: 連続する半角スペースを1つに圧縮 --- Dim str2 As String str2 = "東京 大阪 名古屋 福岡" re.Pattern = " +" '半角スペース1文字以上 Debug.Print re.Replace(str2, " ") '-> "東京 大阪 名古屋 福岡" '--- パターン3: 括弧()の中身ごと削除 --- Dim str3 As String str3 = "商品名(廃番)在庫なし(要確認)" re.Pattern = "[((][^))]*[))]" '括弧ごと削除 Debug.Print re.Replace(str3, "") '-> "商品名在庫なし" End Sub

05 複数条件の一括置換(Dictionaryループ) 10個以上のキーワードを1つの関数で処理する効率的な実装

複数の文字列を一括で置換したい場合、Dictionaryオブジェクトに「置換前→置換後」のペアを登録してループ処理する方法が実務でよく使われます。

'--- Dictionaryを使った複数条件の一括置換 --- Sub MultiReplace() Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") '置換テーブルを登録(検索文字 -> 置換後文字) dict.Add "株式会社", "(株)" dict.Add "有限会社", "(有)" dict.Add "合同会社", "(合)" dict.Add "東京都", "東京" dict.Add "大阪府", "大阪" Dim str As String str = "株式会社サンプル 東京都千代田区" 'Dictionaryをループして全て置換 Dim key As Variant For Each key In dict.Keys str = Replace(str, key, dict(key)) Next key Debug.Print str '-> "(株)サンプル 東京千代田区" End Sub

06 セル内文字列を置換するReplaceメソッド(Range.Replace) Excel検索置換のVBA版:ワイルドカード・完全一致・部分一致を指定

Range.ReplaceメソッドはExcelシートのセル内テキストを直接置換します。Replace関数が変数内の文字列を処理するのに対し、Range.Replaceはワークシート上のセルを対象にします。ExcelのCtrl+H「検索と置換」のVBA版です。

📚 用語解説

Range.Replaceメソッド(VBA):ExcelのRangeオブジェクト(セル範囲)内の文字列を検索・置換するメソッド。「Range("A1:Z100").Replace What:="検索文字", Replacement:="置換後文字"」の形式で使います。LookAtパラメータでxlWhole(完全一致)とxlPart(部分一致)を選択できます。MatchCaseでTrueを指定すると大文字小文字を区別します。SearchOrderで検索方向(行方向/列方向)も指定できます。

Sub CellReplaceBasic() '--- 基本的なセル内テキスト置換 --- Range("A1:A100").Replace _ What:="東京", _ Replacement:="大阪", _ LookAt:=xlPart, _ 'xlPart=部分一致(デフォルト) MatchCase:=False '大文字小文字を区別しない '--- xlWhole: セル全体が一致する場合のみ置換 --- Range("B1:B100").Replace _ What:="完了", _ Replacement:="DONE", _ LookAt:=xlWhole 'セル全体が"完了"の場合のみ '--- ワイルドカードで検索("*" = 任意の文字列)--- Range("C1:C100").Replace _ What:="第*号", _ '「第X号」の形式を全て対象 Replacement:="", _ SearchOrder:=xlByRows, '行方向に検索 MatchCase:=False End Sub
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 Replace関数 vs Replaceメソッドの使い分け早見表 どのシーンでどちらを使うべきかを一目で判断できる

Replace関数とRange.Replaceメソッドは似た名前ですが、全く異なる目的で使います。どちらを使うべきかは「変数内の文字列を処理したいか、シートのセルを直接処理したいか」で判断します。

比較項目Replace関数Range.Replaceメソッド
対象String変数・式の文字列ExcelシートのRange(セル範囲)
戻り値置換後のString値を返すセルを直接書き換える(戻り値なし)
大文字小文字compareパラメータで制御MatchCaseパラメータで制御
完全/部分一致常に部分一致LookAtでxlWhole/xlPartを選択
ワイルドカード不可(正規表現はRegExpで対応)「*」「?」が使用可能
複数条件ループまたはDictionary1回ずつ呼び出す
主な用途データ整形・変数処理・改行削除Excelシートの検索置換の自動化
文字列変数を処理したい
改行削除・表記ゆれ統一
Replace関数を使う
Replace(str, "前", "後")
Excelセルを直接処理したい
大量セルを一括置換
Range.Replaceを使う
Range.Replace What:="前"

08 Claude CodeでVBA文字列置換コードを自動生成する 「〇〇を××に変えるVBAを書いて」で即座にコードが完成

VBAの文字列置換は「どのオブジェクトを使うか」「大文字小文字をどう扱うか」「正規表現が必要か」など組み合わせが多く、コードを毎回ゼロから書くのは手間がかかります。Claude Codeに置換条件を日本語で伝えるだけで、最適なコードが自動生成できます。

✔️「A列に入力された住所から都道府県名を全て削除するVBAを書いて」
✔️「文字列に含まれる改行・タブ・全角スペースを全て削除するVBAを書いて」
✔️「商品名の英字の大文字小文字を関係なく検索して"在庫切れ"に置換するVBAを書いて」
✔️「下のリスト(10個のペア)を全て一括置換するVBAをDictionaryで書いて」
✔️「セルの値に括弧()で囲まれた文字列が含まれていたら括弧ごと削除するVBAを書いて」

Excelデータ整形・文字列処理の自動化をClaude Code×AI鬼管理で

文字列置換・改行削除・表記ゆれ統一など、Excelデータ整形の定型業務をClaude Codeを使ったVBAマクロで自動化する方法を無料でご相談いただけます。

AI鬼管理山崎 AI鬼管理山崎
「毎月Excelに取り込んだCSVデータに余分な改行や全角スペースが混じっていて手作業で消している」——このような業務こそVBAマクロで自動化できます。要件を日本語で伝えていただければコードを生成します。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. VBAのReplace関数とReplaceメソッドは何が違いますか?

A. Replace関数(Replace(文字列, 検索, 置換))はVBAの変数に入っている文字列を処理して、置換後の文字列を返します。元の変数は変わらず戻り値として新しい文字列を返します。Range.Replaceメソッド(Range("範囲").Replace What:="検索", Replacement:="置換")はExcelシートのセル内テキストを直接書き換えます。変数内の文字列を処理したい場合はReplace関数、シートのセルを直接処理したい場合はRange.Replaceを使います。

Q. VBAで改行コードを削除するには?

A. 「str = Replace(str, vbCrLf, "")」でWindows改行(CR+LF)を削除できます。Unixの改行(LF)は「Replace(str, vbLf, "")」、旧MacOS(CR)は「Replace(str, vbCr, "")」で処理します。完璧に全種類の改行を消すには3つを順番にReplace関数で処理します。セル範囲内の全セルから改行を消す場合はFor EachループとReplace関数を組み合わせます。

Q. VBAのReplace関数で大文字小文字を区別しないで置換するには?

A. Replace関数の6番目のパラメータ「compare」に「vbTextCompare」を指定します。「Replace(str, "apple", "Mango", 1, -1, vbTextCompare)」のように書くと、Apple・apple・APPLEなど全て大文字小文字に関係なく置換されます。startパラメータ(4番目)に1、countパラメータ(5番目)に-1を指定する必要があります(デフォルト値)。

Q. 10個以上のキーワードを一括で置換するVBAの書き方は?

A. Scripting.Dictionaryオブジェクトを使う方法が便利です。「dict.Add "置換前", "置換後"」で置換ペアを登録し、「For Each key In dict.Keys: str = Replace(str, key, dict(key)): Next key」のようにループで全ペアを処理します。10個でも100個でも同じコードで動作し、置換ペアの追加・削除もdictの行を増減するだけで対応できます。

Q. VBAのRange.Replaceでワイルドカードを使うには?

A. 「Range("A1:A100").Replace What:="第*回", Replacement:=""」のように、What(検索文字列)に「*」(任意の文字列)や「?」(任意の1文字)のワイルドカードを使えます。ただし「*」を文字リテラルとして検索したい場合は「~*」のように「~」でエスケープする必要があります。Range.Replace固有の機能で、通常のReplace関数ではワイルドカードは使えません。

Q. VBAのReplace関数で正規表現を使うには?

A. VBAのReplace関数単体では正規表現は使えません。正規表現が必要な場合はRegExpオブジェクト(VBScript.RegExp)を使います。「Set re = CreateObject("VBScript.RegExp")」でオブジェクトを作成し、「re.Pattern = "正規表現パターン"」でパターンを設定、「re.Replace(文字列, 置換文字)」で置換を実行します。「re.Global = True」を設定すると全件マッチ、Falseだと最初の1件のみになります。

Replace関数の実践パターン集(よく使うコードをコピーして使う)

実務でよく使うReplace関数のパターンを集めました。コピーしてすぐに使えます。

'--- パターン集: コピーして即使えるReplace実践コード --- Sub ReplacePatternCollection() Dim s As String s = Cells(1, 1).Value 'A1セルの値を処理 '1) 全角数字を半角数字に変換(StrConv使用) s = StrConv(s, vbNarrow) '2) 連続するスペースを1つに圧縮(Trim+Split+Join) s = Trim(s) '3) 先頭・末尾のスペースと改行を全て削除 Do While Left(s, 1) = " " Or Left(s, 1) = " " s = Mid(s, 2) Loop '4) 電話番号のハイフンを削除(03-1234-5678 -> 0312345678) s = Replace(s, "-", "") s = Replace(s, "ー", "") '全角ハイフン '5) URLからhttps://を削除してドメイン名だけ取り出す Dim url As String url = "https://www.example.co.jp/page/" url = Replace(url, "https://", "") url = Replace(url, "http://", "") Debug.Print url '-> "www.example.co.jp/page/" '6) メールアドレスの@以降をマスク Dim email As String email = "user@example.com" Dim atPos As Long atPos = InStr(email, "@") If atPos > 0 Then email = Left(email, atPos) & "***" End If Debug.Print email '-> "user@***" End Sub

Replace関数はシンプルな固定文字列の置換に最適で、StrConv(文字変換)・Trim(空白除去)・InStr(文字検索)などのVBA文字列関数と組み合わせることで、複雑なデータ整形処理も実現できます。CSVやシステムからエクスポートしたデータのクリーニング、フォーム入力値の正規化など、業務上でよく発生する文字列処理の自動化に活用してください。Claude Codeに「この文字列をこういう形式にしたい」と伝えるだけで、適切なVBAコードを即座に生成できます。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月18日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。