日本語でデータの突合をする際ネックになるのは想定される入力形式が多いことです。
例えば、フリガナが「わたなべ しょういち」の場合、以下のようなデータが入力される可能性が考えられます。
わたなべ しょういち | 全角ひらがな | 姓名の間=全角スペース |
わたなべ しょういち | 全角ひらがな | 姓名の間=半角スペース |
ワタナベ ショウイチ | 全角カタカナ | 姓名の間=全角スペース |
ワタナベ ショウイチ | 全角カタカナ | 姓名の間=半角スペース |
ワタナベ ショウイチ | 半角カタカナ | 姓名の間=全角スペース |
ワタナベ ショウイチ | 半角カタカナ | 姓名の間=半角スペース |
これだけでも面倒ですが、もっと面倒なパターンがあります。
「ショウイチ」の「ョ(小文字)」が「ヨ(大文字)」になっているパターンです。
と思うかもしれませんが、他のシステムから出力されたデータと突合する場合などには実際に遭遇します。
「ショウイチ」と「シヨウイチ」を同一人物とみなすためには、両方を同じ形に整形する必要があります。
今回は小文字の全角カタカナを大文字の全角カタカナに変換するサンプルプログラムをご紹介します。
事前処理
先にあげたように、小文字を大文字に統一する以前に諸々のパターンがありますので
事前処理として以下の処理を行います。
- 平仮名をカタカナに変換
- 半角を全角に変換
こちらはstrconv()関数を使えば一気に対応できます。
strconv()関数
【概要】引数の文字列を指定の方法によって変換した形で返す関数です。
【構文】 StrConv(元の文字列,変換方法, 国別情報識別子 )
【変換方法の指定】
- StrConv(“わたなべ しょういち”, vbKatakana ) → 「ワタナベ ショウイチ」
- Strconv(“ワタナベ ショウイチ”, vbWide) → 「ワタナベ ショウイチ」
どんなデータがあるか分からない場合は、カタカナ変換と全角変換を両方しておくと安心です。
StrConv(元の文字列, vbKatakana+vbWide )
※定数を指定する他に第二引数に値の合計を指定する方法もあります。
(16+4、または20)例:Strconv(元の文字列,20)
変換方法の定数一覧
定数 | 値 | 内容 |
vbUpperCase | 1 | 文字列を大文字に変換 |
vbLowerCase | 2 | 文字列を小文字に変換 |
vbProperCase | 3 | 文字列の各単語の先頭の文字を大文字に変換 |
vbWide | 4 | 文字列内の半角文字(1バイト)を全角文字(2バイト)に変換 |
vbNarrow | 8 | 文字列内の全角文字(2バイト)を半角文字(1バイト)に変換 |
vbKatakana | 16 | 文字列内のひらがなをカタカナに変換 |
vbHiragana | 32 | 文字列内のカタカナをひらがなに変換 |
vbUnicode | 64 | システムの既定のコードページを使って文字列を Unicode に変換 |
vbFromUnicode | 128 | 文字列を Unicode からシステムの既定のコード ページに変換 |
第3引数の国別情報識別子は省略可能です。
システムとは異なる国別情報識別子を指定する際に設定します。
サンプルプログラム
サンプルプログラムの解説
小文字から大文字に変換したい文字をそれぞれ文字列で用意します。
“ァィゥェォャュョッ”
“アイウエオヤユヨツ”
対応するそれぞれの文字位置は同じである必要があります。
変換元の文字列を1文字ずつ取得しながら、変換対象文字列に存在すれば置き換える処理を行います。
これで「フリガナ」の入力形式が整いました。