VBA 関数 EXCEL&VBA

エクセルで全角から半角に文字列を置換する方法|関数とVBA

今回はエクセルで 全角から半角に文字列を置換する方法 です。

一生懸命入力したデータも、全角文字と半角文字が混在していると統一感に欠けて美しくありません。

関数やVBAで全角から半角に文字列を揃えて見栄えを良くする方法をマスターしましょう。



全角から半角に文字列を置換する

全角から半角に文字列を置換するには、関数を使う方法とVBAを使う方法があります。

VBAはハードルが高い、という方は関数を使えばいいですし、VBAをご存知の方はVBAで対応した方が後々繰り返されるデータのメンテナンスが楽になります。

関数を使って全角から半角に置換する

関数を使って 全角から半角に置換 するには ASC関数 が便利です。

ASC関数

ASC関数とは、全角文字(2バイト)を 半角文字(1バイト)に置換してくれる関数で;

= ASC ( 文字列 )

のように表されます。

ASC関数の使い方

下のサンプルを使って ASC関数の使い方を解説します。


▲全角カナと半角カナがごちゃ混ぜ

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


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

数式を下のセルB7までコピーするとカタカナが 全角から半角に置換 されます。
※漢字やひらがなは ASC関数の影響を受けません

つぎに、数式の結果が表示されている セルB2 からB7までをコピー します。
そして、セルA2で右クリックして「値のみ」A列に貼り付けます

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


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


VBAを使って全角から半角に置換する

セルに関数入れてコピペして削除するのもするのも良いですが、全角から半角に統一する「データメンテナンス」は一度きりではありません。定期的な実施が必要です。

こんなときは、VBAを使って最初にしっかり作業しておけば、その後はワンタッチで全角から半角に一発変換することが可能でメンテナンスが楽になります。

StrConv関数

VBAで使う 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  ’「7」の部分の数値はデータ件数が増えたら最終行の番号にする
    strKana = ActiveSheet.Cells( i, 1).Value
    ActiveSheet.Cells( i, 1 ).Value = StrConv( strKana, vbNarrow
  Next i
End Sub
'-----------------<< End of Source >>------------------

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


▲一瞬で全角が半角に置換された!

このマクロがあれば、次回のデータメンテナンス時は最終行の番号だけを書き換えるだけで簡単に実行できます。
※「最終行」の番号を自動で取得したければ こちらの記事 をご覧ください。

『エクセルで全角から半角に文字列を置換する方法』は以上です。
他の関連記事とあわせて仕事や趣味に役立ててください。

関連記事・広告



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

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

Excelで全角・半角をチェックする方法
LEN関数・LENB関数
Excelでデータの全角・半角をチェックする方法を解説。カタカナやアルファベットの中には、フォントによって見た目の全角・半角の区別が難しい文字もあります。

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

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

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




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