一覧表を利用した表記ゆれ統一の自動化(Excel VBA)

本記事では、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 の代わりに CellsEnd(xlUp) を用いて、データ量に応じて範囲を自動設定できます。

まとめ

一覧表を参照して表記ゆれを一括で修正する方法は、データの正規化や品質管理に有効です。手作業による修正よりも圧倒的に効率が上がり、ミスも減らせます。特に顧客名や商品名など、表記の揺れが発生しやすいデータには大変有用です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次