
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エキスパート資格を解説!