AccessVBA 小文字(小さい「ッ」)を大文字(普通の「ツ」)に変換するサンプル

当ページのリンクには広告が含まれています。
小文字大文字変換
  • URLをコピーしました!

日本語でデータの突合をする際ネックになるのは想定される入力形式が多いことです。

例えば、フリガナが「わたなべ しょういち」の場合、以下のようなデータが入力される可能性が考えられます。

わたなべ しょういち全角ひらがな姓名の間=全角スペース
わたなべ しょういち全角ひらがな姓名の間=半角スペース
ワタナベ ショウイチ全角カタカナ姓名の間=全角スペース
ワタナベ ショウイチ全角カタカナ姓名の間=半角スペース
ワタナベ ショウイチ半角カタカナ姓名の間=全角スペース
ワタナベ ショウイチ半角カタカナ姓名の間=半角スペース

これだけでも面倒ですが、もっと面倒なパターンがあります。

「ショウイチ」の「ョ(小文字)」が「ヨ(大文字)」になっているパターンです。

そんなことある?

と思うかもしれませんが、他のシステムから出力されたデータと突合する場合などには実際に遭遇します。

ショウイチ」と「シヨウイチ」を同一人物とみなすためには、両方を同じ形に整形する必要があります。

今回は小文字の全角カタカナを大文字の全角カタカナに変換するサンプルプログラムをご紹介します。

目次

事前処理

先にあげたように、小文字を大文字に統一する以前に諸々のパターンがありますので
事前処理として以下の処理を行います。

  • 平仮名をカタカナに変換
  • 半角を全角に変換

こちらはstrconv()関数を使えば一気に対応できます。

strconv()関数

【概要】引数の文字列を指定の方法によって変換した形で返す関数です。

【構文】 StrConv(元の文字列,変換方法, 国別情報識別子 )

【変換方法の指定】

  • StrConv(“わたなべ しょういち”, vbKatakana ) → 「ワタナベ ショウイチ」
  • Strconv(“ワタナベ ショウイチ”, vbWide) → 「ワタナベ ショウイチ」

どんなデータがあるか分からない場合は、カタカナ変換と全角変換を両方しておくと安心です。

StrConv(元の文字列, vbKatakana+vbWide )

※定数を指定する他に第二引数に値の合計を指定する方法もあります。

(16+4、または20)例:Strconv(元の文字列,20)

変換方法の定数一覧

定数内容
vbUpperCase1文字列を大文字に変換
vbLowerCase2文字列を小文字に変換
vbProperCase3文字列の各単語の先頭の文字を大文字に変換
vbWide4文字列内の半角文字(1バイト)を全角文字(2バイト)に変換
vbNarrow8文字列内の全角文字(2バイト)を半角文字(1バイト)に変換
vbKatakana16文字列内のひらがなをカタカナに変換
vbHiragana32文字列内のカタカナをひらがなに変換
vbUnicode64システムの既定のコードページを使って文字列を Unicode に変換
vbFromUnicode128文字列を Unicode からシステムの既定のコード ページに変換

第3引数の国別情報識別子は省略可能です。
システムとは異なる国別情報識別子を指定する際に設定します。

サンプルプログラム

'---------------------------------------------------------------------
'   処理内容:カタカナ小文字→大文字関数
'   引数:  変換前文字列
'   戻り値: 変換後文字列
'  更新:
'---------------------------------------------------------------------
Public Function HanKanaConv(motoString As String) As String
    Dim i As Integer
    Dim P As Integer
    Dim C As String
    
    Const HanKanaS = "ァィゥェォャュョッ"
    Const HanKanaL = "アイウエオヤユヨツ"

    HanKanaConv = motoString
    
    '1文字ずつチェック
    For i = 1 To Len(motoString)
        '取得した1文字を変数Cにセット
        C = Mid(motoString, i, 1)
        
        '変数Cが変換対象文字であれば変換対象文字列における文字位置を戻す
        P = InStr(1, HanKanaS, C, vbBinaryCompare)
                
        '変数Cが変換対象文字であれば変換後対象文字列の同じ位置の文字に置き換える
        If P > 0 Then
            Mid(HanKanaConv, i) = Mid(HanKanaL, P, 1)
        End If
        
    Next i
    
End Function

サンプルプログラムの解説

小文字から大文字に変換したい文字をそれぞれ文字列で用意します。

“ァィゥェォャュョッ”
“アイウエオヤユヨツ”

対応するそれぞれの文字位置は同じである必要があります。

変換元の文字列を1文字ずつ取得しながら、変換対象文字列に存在すれば置き換える処理を行います。

これで「フリガナ」の入力形式が整いました。

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

コメント

コメントする

目次