こんにちは、ぐーです。
今回は、Excel実務で避けては通れない課題である「全角・半角の表記ゆれ」を解消する方法について解説します。
例えば、アンケートデータの住所欄で「1-2-3」と「1-2-3」が混在し、集計やマッチングが正しく行えないといった経験はないでしょうか?
これを手作業で修正していると、わずか100件のデータでも多大な時間を要し、目も疲れてしまいますよね。
そこで、Excel VBAのStrConv(ストリング・コンバート)関数を活用し、こうした煩雑な処理をスマートに効率化するテクニックをご紹介します。
StrConv関数とは?
StrConv関数は、文字列(String)の形式を変換(Convert)するための関数です。基本の構文は以下の通りとなります。
StrConv(変換したい文字, 変換の種類)
この「変換の種類」に何を指定するかで、結果が自由自在に変わります。
押さえておきたい「3つの主要な定数」
実務で頻出する設定は以下の3つです。これらを使い分けるだけで、大抵のデータクレンジングに対応できるようになります。
- vbWide:半角文字を「全角」に変換します
- vbNarrow:全角文字を「半角」に変換します
- vbProperCase:英文の各単語の先頭を「大文字」に変換します
【コピペOK】実践コード集
では、実際に使えるコードを見てみましょう。VBE(マクロの編集画面)に貼り付けて使ってみてください。
1. 選択範囲をすべて「全角」に統一する
カタカナの「アイウエオ」を「アイウエオ」へ、あるいは半角数字を全角へ変換したい場合に役立ちます。
Sub 全角に統一する()
Dim cell As Range
' 選択しているセルを1つずつ処理します
For Each cell In Selection
' 空白じゃない場合だけ実行
If cell.Value <> "" Then
' vbWide = 全角にする定数
cell.Value = StrConv(cell.Value, vbWide)
End If
Next cell
MsgBox "全角への変換が完了しました!"
End Sub
2. 選択範囲をすべて「半角」に統一する
住所の番地や電話番号、製品型番などを半角で統一したい場合はこちらのコードが最適です。
Sub 半角に統一する()
Dim cell As Range
For Each cell In Selection
If cell.Value <> "" Then
' vbNarrow = 半角にする定数
cell.Value = StrConv(cell.Value, vbNarrow)
End If
Next cell
MsgBox "半角への変換が完了しました!"
End Sub
3. ローマ字氏名の先頭のみを大文字にする
「yamada taro」を「Yamada Taro」のように整えます。顧客名簿の整理などに非常に便利です。
Sub 先頭だけ大文字にする()
Dim cell As Range
For Each cell In Selection
If cell.Value <> "" Then
' vbProperCase = 先頭大文字
cell.Value = StrConv(cell.Value, vbProperCase)
End If
Next cell
MsgBox "変換完了!"
End Sub
まとめ:データ整理は「統一感」が信頼を生む
Excel業務において、データの形式が揃っていることは、単なる美しさだけでなく「仕事の正確さ」を示す指標となります。
StrConv関数をマスターして、バラバラなデータを一瞬で整列させる効率的なワークフローを手に入れましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント