Excelでカタカナ/ひらがな、半角/全角の文字列変換をするにはVBA/マクロ便利Tips

業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、文字列の変換が行えるStrConvメソッドを使い、ひらがなをカタカナに変換するマクロや半角英語を全角英語に変換するマクロの作り方を解説。

» 2014年05月26日 18時00分 公開
[薬師寺国安PROJECT KySS]
「VBA/マクロ便利Tips」のインデックス

連載目次

※本Tipsの環境:Windows 8.1 Enterprize(64ビット)+Excel 2013


 今回は、文字の変換に関するTipsを紹介しよう。「ひらがな」を「カタカナ」に変換する必要性は、日常の業務においても出てくると思う。例えば、最初は「氏名」の読みを「カタカナ」で会員登録をしていたが、途中で「ひらがな」登録に変更したい場合などは、このマクロを使えば一括で変換できる。

 また今回は、「半角」文字を「全角」文字に変換する方法も紹介する。メインフレーム時代の古いデータでは「半角カタカナ」が使われていたので、いまだにそのデータを扱わなければならず、「全角カタカナ」に変換したい場合もあるだろう。もしくは、データ入力時に間違って「半角数字」で入力するべきところを「全角数字」で入力していた場合などでは、今回のTipsを応用すれば、「全角」を「半角」に変換できるので、ぜひ試してみてほしい。

 なお本Tips連載は、ある程度VBA/マクロが使える方を対象にしている。Excelマクロ/VBAの初心者の方は、「Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ」を参照しながら本稿を読んでいただきたい。

StrConvメソッドで「ひらがな」を「カタカナ」に変換

 「ひらがな」から「カタカナ」への変換などは、個人情報を入力した際に、「読み」を「ひらがな」で入力させてExcelデータとして管理していたが、都合で「カタカナ」の「読み」に変更せざるを得なくなった場合などに利用できるTipsだ。

 文字の変換には、StrConvメソッドを使う。書式は下記のようになる。

StrConvメソッドの書式

StrConv({string},{conversion},{LCID})


 {string}には変換する文字列を指定する。{conversion}には表1の変換形式を指定する。{LCID}には国別情報識別子を指定するが、これは省略して構わない。

表1 変換形式の種類1
定数 説明
vbKatakana カタカナに変換
vbHiragana ひらがなに変換
参考:VbStrConv 列挙型 - MSDN

 図1のような表があったとしよう。氏名の「ひらがな」が入力されている。

図1 「ひらがな」で氏名が入力されている

 リスト1は図1の「ひらがな」を「カタカナ」に変換するコード例だ。

Sub ひらがなをカタカナに変換()
  Dim i As Integer
  For i = 11 To 13
    Cells(i, 3) = StrConv(Cells(i, 2), vbKatakana)
  Next
End Sub
リスト1 「ひらがな」を「カタカナ」に変換

 まず、Integer型変数「i」を宣言する。11行から13行目にかけてFor〜Nextの反復処理を行う。反復処理内では以下の処理を行う。11行から13行目の3列目(C列)に、11行から13行目の2列目(B列)の「ひらがな」を、StrConvメソッドで「カタカナ」に変換させて表示させる。

 各セルの書式は事前にExcelのメニューから書式設定をしている。

 実行すると、図2のように表示される。

図2 「ひらがな」が「カタカナ」に変換されて表示された

StrConvメソッドで「半角」と「全角」の変換

 次は「半角」と「全角」の変換を行ってみよう。上記「ひらがな」と「カタカナ」の変換の場合と同じくStrConvメソッドを使う。{conversion}には表2の値を指定する。

表2 変換形式の種類2
定数 説明
vbWide 全角に変換
vbNarrow 半角に変換
参考:VbStrConv 列挙型 - MSDN

 図3のようなデータがあったとしよう。

図3 半角で入力されたデータ

 図3の半角文字を全角文字に変換させるコードはリスト2だ。

Sub 半角から全角に変換()
  Dim i As Integer
  For i = 15 To 17
    Cells(i, 3) = StrConv(Cells(i, 2), vbWide)
  Next
End Sub
リスト2 「半角」から「全角」に変換するコード

 コードはリスト1とほとんど同じだ。指定する行番号が異なるのと、StrConv関数に全角に変換させるvbWideを指定している。

 実行すると図4のように表示される。

図4 「半角」文字が「全角」文字に変換された

 もちろん、vbNarrowを使えば、「全角」を「半角」に変換できるので、試してみてほしい。

全角カナと半角カナが混ざったデータの場合は?

 今回のTipsの応用編として、全角カナと半角カナが混ざったデータがあり、半角のセルのみを判定して全角カナにするといったことも考えられる。それについては、別の機会に紹介したいが、できそうな人はぜひ挑戦してみてほしい。ヒントはLEN関数とLENB関数だ。それでは、また。

著者プロフィール

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。

1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。

1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。

2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。

Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。

Microsoft MVP for Development Platforms - Client App Dev(Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。