ExcelVBA セル内のデータから特定の文字を削除する3つの方法

 

ExcelVBA セル内のデータから特定の文字を削除する3つの方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA 特定の文字を削除する|シーン

以下のシーンで利用します。

1.データをクリーンアップしたい(例:「(株)ABC」 → 「ABC」にする)

2.不要な記号や文字を削除したい(例:「123-456-7890」 → 「1234567890」)

3.数値データを統一したい(例:「1,234」 → 「1234」 に変換)

 

Excel VBA 特定の文字を削除する|使い方

1. Replace関数を使う(簡単・高速)

2. Forループで特定の範囲を処理する

3. 正規表現(RegExp)を使う(高度な削除)

 

Excel VBA 特定の文字を削除するサンプルコード

Replace関数を使う方法

Option Explicit

Sub DeleteText_Cells()
    With Sheets("Sheet1").Cells
        .Replace What:="(株)", Replacement:="", LookAt:=xlPart
    End With
End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

・What:="(株)" → 削除したい文字
・Replacement:="" → 空白にすることで削除
・LookAt:=xlPart → 部分一致で削除(xlWhole にすると完全一致のセルだけ削除)

Forループで特定の範囲だけ文字を削除

Option Explicit

Sub DeleteText_Loop()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range

    Set ws = Sheets("Sheet1")
    Set rng = ws.Range("A1:A100") ' A1:A100 の範囲のみ対象

    For Each cell In rng
        If InStr(cell.Value, "(株)") > 0 Then ' "(株)" が含まれている場合
            cell.Value = Replace(cell.Value, "(株)", "") ' 削除
        End If
    Next cell
End Sub

 

・InStr(cell.Value, "(株)") > 0 → 文字が含まれているか判定
・Replace(cell.Value, "(株)", "") → 特定の文字を削除

正規表現(RegExp)を使う方法

Option Explicit

Sub DeleteText_RegExp()
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim regEx As Object

    Set ws = Sheets("Sheet1")
    Set rng = ws.Range("A1:A100") ' A1:A100 の範囲のみ対象
    Set regEx = CreateObject("VBScript.RegExp")

    regEx.Pattern = "[^0-9]" ' 数字以外を削除
    regEx.Global = True ' すべてのマッチを削除
    regEx.IgnoreCase = True ' 大文字小文字を区別しない

    For Each cell In rng
        If regEx.Test(cell.Value) Then
            cell.Value = regEx.Replace(cell.Value, "") ' 数字以外を削除
        End If
    Next cell

    Set regEx = Nothing
End Sub

 

・Pattern = "[^0-9]" → 数字以外のすべての文字を削除
・Global = True → セル内のすべての該当部分を削除

注意点

1. Cells.Replace は数式を壊す可能性あり
・数式の一部が削除されると計算が崩れる

2. 大文字・小文字の違い
・Cells.Replace は大文字小文字を区別しない
・RegExp は IgnoreCase = True で無効化できる

3. 置換対象が多いと処理が遅くなる
・1万件以上のデータがある場合、Cells.Replace の方が 高速
・Forループ は 特定の範囲に限定する ことで速度を改善

 

Excel VBA 特定の文字を削除するまとめ

・「単純な削除」 → Cells.Replace

・「範囲や条件付き削除」 → Forループ

・「特定のフォーマット(記号・数値)」 → RegExp

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問