📊 Excel VBA Top100
🔄

FindAndReplace

データ処理

アクティブシートで文字列の検索と置換を行います

シート全体または選択範囲内の特定の文字列を一括検索し、指定した新しい文字列に置換するマクロです。Excelの「検索と置換」ダイアログ(Ctrl+H)と同等の機能をVBAで自動化しており、置換対象の範囲指定や大文字小文字の区別オプションも設定できます。定期的に行う表記統一作業や、フォーマット変更に伴う一括修正を素早く処理できます。置換件数も実行後に表示されるため、作業結果の確認が容易です。VBAによる一括処理のため、手動のCtrl+Hと違って「どのシートに実行したか分からなくなる」事故を防ぎ、決まった置換作業をマクロとして記録・再利用できます。複数の置換ルールがある場合は、コード内に置換ペアを並べておけば一度の実行で全ルールを適用する形にも発展させられます。表記統一はVLOOKUPや集計の精度に直結するため、データ整形の初期段階で実行するのが効果的です。

FindAndReplace デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: FindAndReplace を実行し、検索文字列と置換文字列を入力します

🎯 活用シーン

  • ✓会社名変更や担当者交代に伴い、シート内の旧名称を新名称に一括置換したいとき
  • ✓日付形式を「YYYY/MM/DD」から「YYYY-MM-DD」に統一するなど、表記ゆれを一括修正したいとき
  • ✓商品コードの桁数変更や体系変更に対応するため、コードのプレフィックスを一括更新したいとき
  • ✓支店統合や組織改編のたびに発生する、旧部署名から新部署名への一括修正作業を数秒で終わらせたいとき
  • ✓半角カナを全角カナに直すなど、システム取込要件に合わせた表記変換を一括で行いたいとき

💡 実装のヒント

  • ▸置換前に「検索のみ」で対象データを確認してから置換を実行すると、意図しない置換を防ぐことができます。
  • ▸正規表現は使用できませんが、大文字小文字の区別や完全一致/部分一致の設定が可能です。
  • ▸置換後は元に戻せない(Ctrl+Zが効きにくい)場合があるため、重要なファイルは実行前にバックアップを取ることをお勧めします。
  • ▸「1」を「01」に置換するような場合、他の「1」を含む値まで置換されないか、まず件数の少ない範囲でテストしてください。
  • ▸定期的に発生する同じ置換作業は、コードに検索語と置換語を直接書き込んだ専用マクロにしておくと入力の手間も省けます。

💻 VBAコード

' FindAndReplace
' -----------------
' Macro Name: FindAndReplace
' Description: アクティブシートで文字列の検索と置換を行います
' Parameters: なし
' Returns: なし
' Usage: FindAndReplace を実行し、検索文字列と置換文字列を入力します
' -----------------

Sub FindAndReplace()
    On Error GoTo ErrorHandler

    Dim ws As Worksheet
    Dim findStr As String
    Dim replaceStr As String

    Set ws = ActiveSheet

    findStr = InputBox("検索する文字列を入力してください", "検索文字列")
    If findStr = "" Then Exit Sub

    replaceStr = InputBox("置換後の文字列を入力してください", "置換文字列")

    ws.Cells.Replace What:=findStr, Replacement:=replaceStr, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False

    MsgBox "「" & findStr & "」を「" & replaceStr & "」に置換しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub