英数字を半角にカタカナを全角に変換するExcel関数

Excelでcsvファイルを読み込んだときに、全角の英数字と半角の英数字が混ざっていて見栄えが良くないことがあります。また、半角カタカナを処理する際に、文字化けを起こすことがあります。

このような場合に、英数字を半角に、カタカナを全角に変換する関数があれば便利なので、作成してみました。

スポンサーリンク

英数字を半角にカタカナを全角に変換する関数

早速関数を示します。

標準モジュールにコピー&ペーストしてください。

'-----------------------------------------------------------------------
' Summary: 文字列全体を全角変換し、英数を半角に戻す
' Input  : 変換する文字列
' Returns: 変換後の文字列
'-----------------------------------------------------------------------
Public Function CnvtWidth(ByVal strTgt As String) As String
    Dim i       As Integer  ' 文字位置を示す変数
    Dim intAsc  As Integer  ' 文字コード
    
    ' 文字列全体を全角変換する
    strTgt = StrConv(strTgt, vbWide)

    ' 先頭から最後まで一文字ずつ調べる
    For i = 1 To Len(strTgt)
        ' 半角にした文字を文字コードに変換する
        intAsc = Asc(StrConv(Mid(strTgt, i, 1), vbNarrow))
        ' 文字コードが&H20(半角空白)から&H7E(~)の間なら半角変換対象
        If intAsc >= &H20 And intAsc <= &H7E Then
            ' 半角文字コードを文字に直して置き換える
            Mid(strTgt, i, 1) = Chr(intAsc)
        End If
    Next i
    ' 戻り値をセットする
    CnvtWidth = strTgt
End Function

ワークシート内での使い方

関数はVBAから呼び出すだけでなく、ワークシートでも使えます。

ワークシートからの関数の呼び出し

ワークシートからの関数の呼び出し

A1には、全角、半角が混ざった文字列が入っています。これをA2のように式を書いて変換すれば、A3に示すように英数字は半角に、カタカナは全角に変換できます。角括弧も半角に変換されていることに注意してください。

コメント

タイトルとURLをコピーしました