和風スパゲティのレシピ

日本語でコーディングするExcelVBA

ひらがな↔カタカナの相互変換 - StrConv関数

文字列中のひらがなをカタカナにしたり、
カタカナをひらがなに変換する方法を解説します。

StrConv関数を使用し、引数にvbHiragana/vbKatakanaを渡します。

ひらがなをカタカナに変換する

ひらがなをカタカナに変換するコードがこちらです。

Dim 元文字列 As String
元文字列 = "あいう123アイウ"

MsgBox StrConv(元文字列, vbKatakana) ' アイウ123アイウ

このコードのようにStrConv関数の第二引数に「vbKatakana」を渡すことで、
ひらがなをカタカナに変換することができます。

この処理はひらがな以外の文字には影響を与えません。


例えばA列のデータ内にあるひらがなをカタカナに変換する場合は、
以下のコードを実行してください。

Dim ws処理シート As Worksheet
Set ws処理シート = ThisWorkbook.Worksheets("○○")

Dim 最終行 As Long
最終行 = ws処理シート.UsedRange.Rows.Count + ws処理シート.UsedRange.Row - 1

' すべてのひらがなをカタカナに変換する
Dim R As Long
For R = 2 To 最終行
    
    ws処理シート.Cells(R, 1) = StrConv(ws処理シート.Cells(R, 1), vbKatakana)
    
Next

 

カタカナをひらがなに変換する

続いてカタカナをひらがなに変換するコードがこちらです。

Dim 元文字列 As String
元文字列 = "あいう123アイウ"

MsgBox StrConv(元文字列, vbHiragana) ' あいう123あいう

カタカナに変換したときと同様StrConv関数を使用し、
第二引数に「vbHiragana」を渡すことで変換できます。


これをA列の全データへ実行したい場合は、以下のコードを実行してください。

' すべてのカタカナをひらがなに変換する
Dim R As Long
For R = 2 To 最終行
    
    ws処理シート.Cells(R, 1) = StrConv(ws処理シート.Cells(R, 1), vbHiragana)
    
Next

 

半角カナへの対応

ひらがな↔カタカナの変換は上記の通り簡単なのですが、
半角カナが入ると途端に難易度が跳ね上がりますので注意して下さい。

まず「vbHiragana」については半角カナには対応していません。

元文字列 = "あいう123アイウ"
MsgBox StrConv(元文字列, vbHiragana) ' あいう123アイウ

 
よって半角カナをひらがなにしたり、逆にひらがなを半角カナにするには、
その前に「全角カナ↔半角カナ」の変換を行う必要があります。


この「全角↔半角」変換自体は同じStrConv関数を使って、
第2引数「vbWide」「vbNarrow」を利用すればいいのですが、
この変換は英数字も同時に変換してしまうという欠点があります。


よって、英数字をそのままに半角カナ変換を実行するには、
文字列を1文字ずつ判定して変換するよりほかありません。

そのコードについてはこちらの記事で紹介していますので、
必要であればこちらもお持ち帰りください。
www.limecode.jp