導入:なぜ表記ゆれを放置してはいけないのか
実務において、顧客リストや製品コードを扱う際、英字の「大文字」と「小文字」が混在していると、VLOOKUP関数での検索ミスや、ピボットテーブルでの集計漏れといったトラブルを招きます。これらを一つずつ手作業で修正するのは時間の無駄ですし、ヒューマンエラーの元です。今回は、ExcelのUPPER関数と、それをVBAで自動化する実務的な手法を解説します。
基礎知識:UPPER関数とは
UPPER関数は、指定した文字列内のアルファベットをすべて「大文字」に変換する関数です。
書式は =UPPER(文字列) と非常にシンプルです。
対照的に、すべてを小文字にする LOWER関数 や、先頭文字だけを大文字にする PROPER関数 も存在します。これらを使い分けることで、入力規則がバラバラなデータを一瞬で整えることが可能です。
実装/解決策:VBAで「値として」変換する
関数は非常に便利ですが、変換後に元の列を削除したり、数式を値に置き換えたりする手間が発生します。実務では、この一連の作業をVBAで一気に処理してしまうのが最も効率的です。
サンプルプログラム:選択範囲を一括変換するマクロ
以下のコードは、現在選択しているセル範囲内にある文字列を、すべて大文字に置換するマクロです。関数のように別列を用意する必要がないため、既存の表を直接クリーンアップする際に役立ちます。
Sub ConvertToUpperCase()
‘ 現在選択している範囲のセルを一つずつ処理
Dim rng As Range
‘ 選択範囲がセル以外(図形など)の場合の回避策
If TypeName(Selection) <> “Range” Then Exit Sub
‘ 画面更新を停止して処理速度を向上
Application.ScreenUpdating = False
For Each rng In Selection
‘ セルが空でない場合のみ、大文字に変換
If Not IsEmpty(rng.Value) Then
‘ UCase関数はVBAにおけるUPPER関数に相当
rng.Value = UCase(rng.Value)
End If
Next rng
‘ 画面更新を再開
Application.ScreenUpdating = True
MsgBox “選択範囲の大文字変換が完了しました。”, vbInformation
End Sub
応用・注意点:現場で役立つポイント
1. 大文字・小文字の区別: VBAの UCase関数 を使うことで、Excelのワークシート関数を使わずに直接値を書き換えられます。元のデータが消えるため、念のため事前にシートのコピーを取っておくことを推奨します。
2. 数値や記号への影響: UCase関数は英字以外(数字や記号)には影響を与えません。そのため、英数字混在のデータに対しても安心して適用できます。
3. エラー回避: 選択範囲に数式が含まれている場合、上記コードを実行すると「値」として固定されてしまいます。数式を維持したい場合は、ワークシート関数を直接セルに埋め込むような処理に変更する必要があります。
このテクニックをマスターして、データクレンジングの時間を大幅に短縮しましょう!
