Excelで,分離した濁点・半濁点を結合するときに使うユーザー定義関数です.

目次

  1. 使い方
  2. スクリプト
    1. VBA
    2. シェルスクリプトでの実装

使い方

VBEにこの関数を含めておくことで,マクロから呼び出すだけでなく,シート上でもユーザー定義関数として用いることができます.

スクリプト

VBA

関数は下のコードです.

Function Nfd2nfc(str As String) As String

Dim i As Long
For i = 1 To Len(str)
If Mid(str, i, 1) = "゛" Then
Nfd2nfc = Left(Nfd2nfc, Len(Nfd2nfc) - 1) + Chr(Asc(Mid(str, i - 1, 1)) + 1)
ElseIf Mid(str, i, 1) = "゜" Then
Nfd2nfc = Left(Nfd2nfc, Len(Nfd2nfc) - 1) + Chr(Asc(Mid(str, i - 1, 1)) + 2)
Else
Nfd2nfc = Nfd2nfc + Mid(str, i, 1)
End If
Next

End Function

シェルスクリプトでの実装

スプレッドシートではなく単なるテキストファイルであれば,別のプログラミング言語でも対応できます.
文字コードの正規化方法をNFDからNFCに変換するスクリプトを利用すればよく,シェルスクリプトであれば次のような形です.
nkfコマンドがインストールされているとして,

cat /path/to/file | nkf --ic=UTF8-MAC