濁点と半濁点を取り除く(清音化)

f:id:accs2014:20170530020131p:plain:right:w400

 ふりがなから索引をつくるときに頭文字の「さ」と「ざ」、「た」と「だ」などが別々になって困るといったケースがあります。
 そこで、文字列から濁点(゛)半濁点(゜)を取り除き、これらを同一のものとみなせるようにします。清音処理とも呼ばれます。
 具体例として右のようなテーブルを用い、クエリにより「ふりがな」列に記録されているひらがな及び全角カタカナの濁点及び半濁点を取り除いてひらがなにするものとします。


頭文字のみ取り出して濁点と半濁点を取り除く場合

f:id:accs2014:20170530215020p:plain:right:w400

 最初の1文字のみ清音にできればよいという場合です。最初の1文字の清音(「さ」や「た」など)を索引(グループ化)に用い、並べ替えはふりがな全体で行うという使い方が考えられます。
 次のような列を設けます。

ふりがな清音頭文字: StrConv(Left(StrConv([ふりがな],24),1),36)

 内側のStrConv関数(第2引数が24)でひらがな及び全角カタカナを半角カタカナにします。これにより濁点と半濁点が独立した文字となりますので、Left関数により最初の1文字(清音)を取り出し、外側のStrConv関数(第2引数が36)でひらがなに戻すというわけです。


f:id:accs2014:20170530215016p:plain:right:w400

 データシートビューです。


 なお、カタカナにする(ひらがな及び全角カタカナの濁点及び半濁点を取り除いたのち全角カタカナにする)場合は次のようにします(テーブルの列名が「フリガナ」であるものとします)。

フリガナ清音頭文字: StrConv(Left(StrConv([フリガナ],24),1),4)


文字列全体の濁点と半濁点を取り除く場合

f:id:accs2014:20170530020127p:plain:right:w400

 次のような列を設けます。



ふりがな清音: StrConv(Replace(Replace(StrConv([ふりがな],24),"゙",""),"゚",""),36) 

 内側のStrConv関数(第2引数が24)でひらがな及び全角カタカナを半角カタカナにします。これにより濁点と半濁点が独立した文字となりますので、Replace関数により取り除きます。そして外側のStrConv関数(第2引数が36)でひらがなに戻します。

f:id:accs2014:20170530020121p:plain:right:w400

 データシートビューです。


 なお、カタカナにする(ひらがな及び全角カタカナの濁点及び半濁点を取り除いたのち全角カタカナにする)場合は次のようにします(テーブルの列名が「フリガナ」であるものとします)。

フリガナ清音: StrConv(Replace(Replace(StrConv([フリガナ],24),"゙",""),"゚",""),4)