Excelで促音・拗音を直音に一括変換する

重複がある住所等のExcelデータをデータクリーニング(名寄せ)したいときに。VBAで関数を定義すれば一括変換できる。

目次

問題:促音・拗音を直音に一括変換したい

Excel内の文字列データの促音・拗音(ァィゥェォャュョッ)※と直音(アイウエオヤユヨツ)の表記ゆれを一括で修正したい。
※捨て仮名、半音とも

表記ゆれの何が問題かというと、以下の例のように人間には同じ住所だろうと判断できるが、機械的に処理すると全く別のものとして扱われてしまい重複データとして保持されてしまう。データに重複がある状態で保持し続けてしまうとビジネスやデータ活用に支障が出てしまう。不特定多数のユーザーから入力を受け付けるようなケースではどうしてもこういったデータは発生してしまうので、定期的にデータクリーニング(名寄せ)すべきである。

表記ゆれの例

下記を同じデータとして扱いたいときに、促音・拗音を直音(あるいはその逆)に統一する必要がある。

○○県△△市□丁目◇番地▲グレンデ101

○○県△△市□丁目◇番地▲グレンデ101

解決方法:VBAで関数を定義する

残念ながらExcelに促音から直音へ変換する関数はないのでVBAで関数を定義して、メインのVBAコードから呼び出して使用する。

読み込んだセルの文字列を1文字ずつAsc()で文字コードに変換し、各促音に対応する文字コードに合致するかチェックし、その直音に相当する文字コードを文字にChr()で置き換えている。

Private Function CleansingAddress(ByVal strCell As String) As String
    Dim i As Long
    Dim lngCharCode As Long
    ' セル内の文字を半角に統一する
    strCell = StrConv(strCell, vbNarrow)
    ' セル内の文字を頭から1文字ずつ促音の有無をチェックする
    For i = 1 To Len(strCell)
        lngCharCode = Asc(Mid(strCell, i, 1))
        ' 各促音の文字コードに一致するものがあれば直音に変換する
        Select Case lngCharCode
            Case 167 To 171 'ァ~ォ
                Mid(strCell, i, 1) = Chr(lngCharCode + 10)
            Case 172 To 174 'ャ~ョ
                Mid(strCell, i, 1) = Chr(lngCharCode + 40)
            Case 175 ' ッ
                Mid(strCell, i, 1) = Chr(194)
        End Select
    Next
    ' セル内の文字を全角に戻す
    strCell = StrConv(strCell, vbWide)
    CleansingAddress = strCell
End Function

参考

この記事が気に入ったら
フォローしてね!

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

コメント

コメントする

目次