VBA 関数 EXCEL&VBA

Excelでカタカナを半角に変換する方法|ASC関数とVBA StrConv関数




エクセルで カタカナ文字列 の入ったデータベースを扱っていると、気になることのひとつに「半角カナと全角カナがごちゃまぜ」なことがあります。
ひどい時にはアルファベットにも全角が混在していたり。

カタカナや英数字が半角で揃っていないと、資料としても データベースとしても美しくありません。

そこで今回の h1r0-style.net では、カタカナを半角に変換する方法を「関数で処理する場合」と「VBAで処理する場合」の2パターン解説します。

些細なことですが、これで貴方の資料も美しく変身します。

カタカナを半角カナにするメリット

カタカナや英数字を半角(もしくは全角)に揃えると、見た目の美しさ以外にもメリットがあります。

アプリケーションによっては、データ検索する際に全角・半角を「完全一致」でしか検索できないケースがあります。
そのようなときにデータの中身が全角と半角とが混在する状態では正しく検索できません。
半角で統一することで、確実に検索にヒットさせることができるのです。

また、これもアプリケーションによりますが文字数制限のあるフィールドでは半角に統一することで文字数(バイト数)を節約できます。

関数で処理する場合

ASC関数

セルに関数を入力してカタカナを半角カナに変換するには ASC関数 を使います。
ASC関数とは、全角の英数カナ文字(2バイト)を、半角文字(1バイト)に変換してくれる関数で;

= ASC ( 文字列 )

のように表されます。

ASC関数の使い方

例えば、下図のようなエクセルシートがあったとします。


半角カナと全角カナ、全角英文字が混在しています。

半角に揃えるために、ASC関数 をつかった数式を B列に入力します。


▲セルB2に半角変換された「リンゴ」が表示された!

数式を下のセルB7までコピーするとB列のカタカナが半角に揃います。

※漢字やひらがなは ASC関数の影響を受けません

最後にセルB2 からB7までをコピーし、セルA2で右クリックして「値のみ」A列に貼り付けます。

最後にA列の文字列が半角になったことを確認して、B列を削除すれば出来上がりです。

▲B列の「値のみ」A列に張付けて完成

VBAで処理する場合

セルに関数入れてコピペして削除して、、、なんてめんどいっ!という方はVBAを使ってみてはいかがでしょうか。
最初にしっかり書きこめばあとは一瞬で半角変換できます。

StrConv関数

StrConv関数は文字列の変換を行う関数で、カタカナを半角に変換する以外にも活用できます。

構文は;

StrConv( String, Conversion

のように表されます。

String の部分は変換したい文字列が入ります。

Conversion の部分は変換ルールを指定する定数が入ります。

定数 内容
vbUpperCase 1 文字列を大文字に変換します
vbLowerCase 2 文字列を小文字に変換します
vbProperCase 3 文字列の各単語の先頭の文字を大文字に変換します
vbWide 4 文字列内の半角文字(1バイト)を全角文字(2バイト)に変換します
vbNarrow 8 文字列内の全角文字(2バイト)を半角文字(1バイト)に変換します
vbKatakana 16 文字列内のひらがなをカタカナに変換します
vbHiragana 32 文字列内のカタカナをひらがなに変換します
vbUnicode 64 システムの既定のコードページを使って文字列をUnicodeに変換します
vbFromUnicode 128 文字列をUnicodeからシステムの既定のコードページに変換します

今回の場合は「vbNarrow」を使います。
ここで、ASC関数の説明でつかったサンプルをもう一度使って使用例を紹介します。

StrConv関数の使用例(サンプルコード)

そしてここからは、いつものコピペで使える標準モジュール。サンプルコードです。

Option Explicit


'*********************************************************
'    カタカナを半角に変換
'*********************************************************
Sub Kana_Henkan()
  Dim strKana As String
  ’セルA2からA7を上から順番に半角変換する
  For i = 2 To 7
    strKana = ActiveSheet.Cells( i, 1).Value
    ActiveSheet.Cells( i, 1 ).Value = StrConv( strKana, vbNarrow
  Next i
End Sub
'-----------------<< End of Source >>------------------

このマクロを実行すると、一瞬でセルA2からA7までが半角に変換されます。


▲瞬く間にカタカナが半角に!

以上で、カタカナを半角に変換する方法についての解説は終了です。
みなさんの仕事のお役に立てれば幸いです。

関連記事・広告



併せて読んでおくとさらに便利

VBAで最終行を取得する方法と そこからできること|Excel VBA
VBA・最終行
VBAで最終行を取得する方法を解説。最終行の行番号を取得できることにより最終行の削除や、最終行までセルを選択したり繰り返したり色々なことが可能になります。

EXCELで「文字列の置換・削除」方法をパターン別にまとめた
関数・文字列操作
Excelの特定の文字を削除したり文字列を置換(置き換え)したり、文字列に含まれる余分なスペースや文字を削除したりする方法のまとめです。置換の関数や削除の関数をパターン別に例示し...

VBAで空白行を削除する方法|Excel VBA 高速技
VBA・Unionメソッド
VBAを使って空白行の削除方法を解説します。Unionメソッド を使用して空白行を高速で一括削除する方法をサンプルコード付きで解説。ぜひ参考にしてください。

エクセルの重複データに色を付ける|「ダブり」チェック
条件付き書式・COUNTIF関数
エクセルで重複するデータに色を付ける方法を解説します。Excelでダブりチェックをする方法はいくつかありますが簡単に設定できるのでぜひ挑戦してみましょう。

※その他関連記事は、このページの下の方にもあります。




-VBA, 関数, EXCEL&VBA
-, , ,