
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ベーシック選択問題集をご用意しました。
・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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。