Excel上でテキストに置換を施し,同時に変更箇所の校正のため文字色を付けます.
このマクロは正規表現により置換したいテキストのパターンを柔軟に指定することができます.

目次

  1. 使い方
  2. マクロ

使い方

対象範囲を選択し,そこで呼び出し用のマクロを実行します.
呼び出し用のマクロでCallするマクロの引数は正規表現により指定してください.

マクロ

マクロは下のコードです.
ここではアルファベットの一部が全角や大文字に表記揺れしている単位のkgを半角小文字に置換する例としました.
単位なので正規表現で数字が前に置かれるパターンを指定し,「数字+KG」のような箇所のみを置換しています.
置換箇所は赤文字になります.
ニアミスであるようなパターンは第2引数で指定し,こちらは赤文字にされなかった場合のみ青文字になります.

Sub 呼び出し用のマクロ()

' 全半角大文字小文字のkgやgを半角小文字に置換して着色する例
Call UnitCorrecter("([0-90-9]+\s*[kKkK]?[gGgG])", "([kKkK]?\s*[gGgG])")

End Sub

Sub UnitCorrecter(ptn1, ptn2)

' 正規表現であるようなptn1のパターンに該当する文字列を半角小文字に置換した上で赤文字にし,それに該当せずptn2に該当する文字列を青文字にします.

Dim rng As Range
Dim i As Long
Dim converted As String
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Global = True
Dim m, mc As Variant

re.Pattern = ptn1
For Each rng In Selection
Set mc = re.Execute(rng)
For Each m In mc
For i = 0 To m.submatches.Count - 1
' --- begin ---
' ここで正規表現でヒットしたテキストをconvertedに置換します.
' この例では半角小文字に置換しています.
converted = StrConv(m.submatches(i), vbNarrow)
converted = LCase(converted)
' --- end ---
rng = Replace(rng, m.submatches(i), converted)
rng.Characters(m.FirstIndex + 1, Len(converted)).Font.Color = RGB(255, 0, 0)
Next
Next
Next

re.Pattern = ptn2
For Each rng In Selection
Set mc = re.Execute(rng)
For Each m In mc
For i = 0 To m.submatches.Count - 1
If rng.Characters(m.FirstIndex + 1, 1).Font.Color <> RGB(255, 0, 0) Then
rng.Characters(m.FirstIndex + 1, Len(m.submatches(i))).Font.Color = RGB(0, 0, 255)
End If
Next
Next
Next

End Sub