本記事では、Excel VBAを用いて一覧表に基づき表記の揺れを自動的に置換・統一する方法をご紹介いたします。複数のセルに散在する表記の差異を、あらかじめ作成した対照表を元に一括修正できるため、データの整理や品質向上に役立ちます。
目次
概要
データの統合や分析を行う際、同じ意味を持つ語句でも入力方法の違いによって集計が乱れることがあります。例えば、「株式会社森」と「森(株)」のように表記が異なる場合です。
VBAで一覧表を作成し、それを参照して自動置換すれば、こうした表記ゆれを簡単に解消できます。
サンプルコード
Sub StandardizeTerms()
Dim checkTable As Range, targetRange As Range
Dim i As Long
' 置換ルールの一覧表範囲を設定
Set checkTable = Range("B1:C6")
' 置換対象セル範囲を設定
Set targetRange = Range("E2:E5")
' 一覧表をもとに順次置換
For i = 2 To checkTable.Rows.Count
targetRange.Replace _
What:=checkTable.Cells(i, 1).Value, _
Replacement:=checkTable.Cells(i, 2).Value, _
LookAt:=xlPart
Next i
End Sub
コード解説
- checkTable
表記ゆれ修正ルールをまとめた一覧表の範囲です。左列に置換前、右列に置換後の語句を記載します。 - targetRange
実際に置換を適用するセル範囲を指定します。 - For i = 2 To checkTable.Rows.Count
ループにより、一覧表の2行目から最終行まで順次参照し、置換を実行します。 - Replace メソッド
Excelの置換機能をVBAから呼び出します。LookAt:=xlPartは部分一致での置換を意味します。
応用
- 完全一致のみに変更
部分一致ではなく完全一致のみを対象としたい場合は、LookAt:=xlWholeに変更します。 - 複数列やシートに跨る場合
targetRangeを複数の範囲に設定することで、広範囲のデータにも適用可能です。 - 動的範囲設定
Rangeの代わりにCellsとEnd(xlUp)を用いて、データ量に応じて範囲を自動設定できます。
まとめ
一覧表を参照して表記ゆれを一括で修正する方法は、データの正規化や品質管理に有効です。手作業による修正よりも圧倒的に効率が上がり、ミスも減らせます。特に顧客名や商品名など、表記の揺れが発生しやすいデータには大変有用です。
