【2026年7月最新】VBAのReplace関数とReplaceメソッドを完全マスター|文字列置換・改行削除・大文字小文字区別・正規表現・複数条件置換まで実践コード集
この記事の内容
「Excelから取り込んだデータに余分な改行が混じっている」「文字列を大文字小文字関係なく置換したい」「複数の言葉を一括で別の言葉に変えたい」——VBAの文字列置換ではさまざまなニーズが発生します。
VBAで文字列を置換するにはReplace関数(変数内の文字列を置換)とRange.Replaceメソッド(セル内のテキストを置換)の2種類があります。この記事では改行削除・大文字小文字区別なし・正規表現・複数条件一括置換まで実践コードを完全解説します。
01 REPLACE BASIC Replace関数の基本構文と使い方 必須パラメータと省略可能パラメータの意味を完全解説
VBAのReplace関数は、文字列変数内の指定した文字を別の文字に置き換えて、新しい文字列を返す関数です。元の変数そのものは変わらず、置換後の文字列が戻り値として返ります。
📚 用語解説
Replace関数(VBA):VBAで文字列内の指定した部分文字列を別の文字列に置き換える関数。「Replace(expression, find, replace)」の形式で使います。「expression」が対象の文字列、「find」が置換したい文字列、「replace」が置き換え後の文字列です。Excelの「検索と置換(Ctrl+H)」のVBA版と理解すると分かりやすいです。オプションパラメータ「start」「count」「compare」で置換の細かい制御ができます。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| expression | String | 必須 | 置換対象の文字列(変数またはリテラル) |
| find | String | 必須 | 検索する文字列(この文字列を置換する) |
| replace | String | 必須 | 置き換える文字列(""で削除になる) |
| start | Long | 省略可 | 検索開始位置(デフォルト1=先頭から) |
| count | Long | 省略可 | 置換する最大個数(デフォルト-1=全て) |
| compare | 定数 | 省略可 | vbBinaryCompare(区別)またはvbTextCompare(無視) |
02 SPECIAL CHARS 改行コード・タブ・特殊文字を削除・置換する vbCrLf・vbLf・vbTab・全角スペースの処理コード
Excelに外部データを取り込んだとき、文字列に改行コードやタブが混じっていることがあります。Replace関数とVBA定数を組み合わせて特殊文字を削除・置換できます。
📚 用語解説
改行コード(vbCrLf・vbLf・vbCr):VBAで改行文字を表す定数。vbCrLf(CR+LF、Windowsの改行)・vbLf(LF、Unixの改行)・vbCr(CR、MacOS旧バージョンの改行)の3種類があります。Excelのセルにコピペした文章に改行が混じっている場合、ReplaceでこれらをすべてSpace("")や半角スペースに置換することで、一行の文字列として整形できます。データ取り込み時の前処理でよく使われるテクニックです。
03 CASE INSENSITIVE 大文字小文字を区別しない置換(vbTextCompare) compareパラメータでAとaを同一視して置換する方法
デフォルトのReplace関数は大文字・小文字を区別します("A"と"a"は別扱い)。compare:=vbTextCompareを指定すると大文字小文字を無視して置換できます。
📚 用語解説
vbTextCompare / vbBinaryCompare:VBAのReplace関数・InStr関数などの比較モードを指定する定数。vbTextCompare(値=1)は大文字小文字・全角半角を同一視する「テキスト比較」です。vbBinaryCompare(値=0・デフォルト)は文字コードで完全一致する「バイナリ比較」で、"A"と"a"は別の文字として扱います。英語の固有名詞や型番の表記ゆれを統一したい場合はvbTextCompareを使います。
04 REGEX REPLACE 正規表現を使った高度な文字列置換(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()を使った遅延バインディングでも動作します。
05 MULTI REPLACE 複数条件の一括置換(Dictionaryループ) 10個以上のキーワードを1つの関数で処理する効率的な実装
複数の文字列を一括で置換したい場合、Dictionaryオブジェクトに「置換前→置換後」のペアを登録してループ処理する方法が実務でよく使われます。
06 RANGE REPLACE セル内文字列を置換する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で検索方向(行方向/列方向)も指定できます。
07 COMPARISON TABLE Replace関数 vs Replaceメソッドの使い分け早見表 どのシーンでどちらを使うべきかを一目で判断できる
Replace関数とRange.Replaceメソッドは似た名前ですが、全く異なる目的で使います。どちらを使うべきかは「変数内の文字列を処理したいか、シートのセルを直接処理したいか」で判断します。
| 比較項目 | Replace関数 | Range.Replaceメソッド |
|---|---|---|
| 対象 | String変数・式の文字列 | ExcelシートのRange(セル範囲) |
| 戻り値 | 置換後のString値を返す | セルを直接書き換える(戻り値なし) |
| 大文字小文字 | compareパラメータで制御 | MatchCaseパラメータで制御 |
| 完全/部分一致 | 常に部分一致 | LookAtでxlWhole/xlPartを選択 |
| ワイルドカード | 不可(正規表現はRegExpで対応) | 「*」「?」が使用可能 |
| 複数条件 | ループまたはDictionary | 1回ずつ呼び出す |
| 主な用途 | データ整形・変数処理・改行削除 | Excelシートの検索置換の自動化 |
改行削除・表記ゆれ統一
Replace(str, "前", "後")
大量セルを一括置換
Range.Replace What:="前"
08 CLAUDE CODE REPLACE Claude CodeでVBA文字列置換コードを自動生成する 「〇〇を××に変えるVBAを書いて」で即座にコードが完成
VBAの文字列置換は「どのオブジェクトを使うか」「大文字小文字をどう扱うか」「正規表現が必要か」など組み合わせが多く、コードを毎回ゼロから書くのは手間がかかります。Claude Codeに置換条件を日本語で伝えるだけで、最適なコードが自動生成できます。
Excelデータ整形・文字列処理の自動化をClaude Code×AI鬼管理で
文字列置換・改行削除・表記ゆれ統一など、Excelデータ整形の定型業務をClaude Codeを使った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関数はシンプルな固定文字列の置換に最適で、StrConv(文字変換)・Trim(空白除去)・InStr(文字検索)などのVBA文字列関数と組み合わせることで、複雑なデータ整形処理も実現できます。CSVやシステムからエクスポートしたデータのクリーニング、フォーム入力値の正規化など、業務上でよく発生する文字列処理の自動化に活用してください。Claude Codeに「この文字列をこういう形式にしたい」と伝えるだけで、適切なVBAコードを即座に生成できます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




