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

 

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

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

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

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

・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

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

・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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!