【VBAリファレンス】Excel VBAとGeminiで実現する全角英数半角化の完全自動化:実務のための100本ノック第24弾

スポンサーリンク

概要:なぜ「全角英数」が日本のビジネス現場の敵なのか

日本のExcel業務において、避けては通れないのが「表記揺れ」の問題です。特に、顧客から送られてくるCSVデータや、手入力が混在するリストにおいて、英数字が全角(ABC123)と半角(ABC123)で混在しているケースは非常に多く見受けられます。

VLOOKUP関数やXLOOKUP関数でデータを検索しようとした際、あるいはピボットテーブルで集計する際、全角と半角が混在しているだけでExcelは別物として扱います。これが原因で「データはあるのにヒットしない」という不毛なエラーが発生し、残業時間を増やす原因となります。

今回の「100本ノック第24弾」では、この全角英数字を瞬時に半角へ変換するVBAテクニックを解説します。また、現代の最強の相棒である生成AI「Gemini」を活用して、コードの保守性と拡張性を高める方法についても深く掘り下げます。

詳細解説:StrConv関数の真価と文字コードの仕組み

VBAには、文字列の変換を行うための非常に強力な関数「StrConv」が用意されています。全角英数字を半角にするためには、この関数に「vbNarrow」という定数を指定します。

StrConv関数は、内部的にUnicodeの文字コード体系を参照し、全角の英数字と記号を対応する半角の文字コードにマッピングし直します。この処理は非常に高速であり、数万行のデータであっても一瞬で処理が完了します。

しかし、実務では単純にセルを変換するだけでは不十分なケースも多々あります。例えば、「特定の列だけを対象にしたい」「空白セルを無視したい」「エラー値が含まれている場合はどうするか」といった例外処理です。これらを考慮しつつ、保守性の高いコードを書くことがプロフェッショナルの条件です。

ここでGeminiの出番です。Geminiに対して「このVBAコードを、エラーハンドリングを含めて最適化して」とプロンプトを送ることで、単なる変換処理だけでなく、堅牢な実務コードへと昇華させることが可能になります。

サンプルコード:全角英数半角化の決定版

以下に、現在選択している範囲内の全角英数字を、効率よく半角に変換するプロシージャを提示します。配列処理を用いることで、セルへのアクセス回数を最小限に抑え、処理速度を極限まで高めています。


Sub ConvertFullWidthToHalfWidth()
    ' 選択範囲内の全角英数字を半角に変換するプロシージャ
    Dim rng As Range
    Dim dataArr As Variant
    Dim i As Long, j As Long
    
    ' 選択範囲がセルでない場合は終了
    If TypeName(Selection) <> "Range" Then Exit Sub
    Set rng = Selection
    
    ' 配列にデータを格納(高速化のため)
    If rng.CountLarge = 1 Then
        ReDim dataArr(1 To 1, 1 To 1)
        dataArr(1, 1) = rng.Value
    Else
        dataArr = rng.Value
    End If
    
    ' 処理実行
    On Error Resume Next
    For i = LBound(dataArr, 1) To UBound(dataArr, 1)
        For j = LBound(dataArr, 2) To UBound(dataArr, 2)
            ' StrConvのvbNarrowオプションを使用して半角変換
            If Not IsError(dataArr(i, j)) Then
                dataArr(i, j) = StrConv(dataArr(i, j), vbNarrow)
            End If
        Next j
    Next i
    On Error GoTo 0
    
    ' 変換後の値をセルに戻す
    rng.Value = dataArr
    
    MsgBox "全角英数字の半角化が完了しました。", vbInformation
End Sub

実務アドバイス:Geminiを活用したコードのブラッシュアップ

このコードは基本的な全角英数字の変換を行いますが、実務では「半角カタカナはどうするのか?」「スペースも変換対象に含めるべきか?」といった細かい要望が出ることがあります。

ここで、Geminiに対して以下のようなプロンプトを投げてみてください。

「このVBAコードに、半角カタカナの変換機能を追加したい。また、処理前に必ず確認メッセージを出し、キャンセル可能にしてほしい。コードの可読性を高めるためのコメントアウトも追加して。」

Geminiは、あなたの意図を汲み取り、以下のような改善案を出力してくれます。
1. ユーザーへの確認ダイアログ(vbYesNo)の実装。
2. StrConvの引数を調整し、全角カタカナへの対応や半角スペースの統一。
3. 可読性を高めるための変数名の命名規則の統一。

このように、VBAの書き手は「何を実現したいか」という要件定義に集中し、具体的な実装のディテールはAIに任せるというスタイルが、これからのスタンダードです。

まとめ:技術の継承と効率化の融合

今回紹介した全角英数字の半角化は、VBAの基本中の基本です。しかし、この「基本」をいかに高速に、そしてエラーなく実行できるかが、業務効率化の分かれ目となります。

私が長年VBA講師をしていて感じるのは、多くのエンジニアが「一度書いたコードを修正するのを恐れる」ということです。しかし、GeminiのようなAIを活用すれば、既存のコードをリファクタリングすることは非常に容易です。

1. 自分の作りたい機能を明確にする。
2. 信頼できる基本コード(今回のサンプルなど)を用意する。
3. AIを使って、現場特有の細かい要望を反映させる。
4. 最後に人間がコードの論理チェックを行う。

このサイクルを回すことで、あなたのVBAスキルは飛躍的に向上します。100本ノックの第24本目として、この「自動化の自動化」をぜひ体得してください。全角英数に悩まされる時間は、今日で終わりにしましょう。あなたのExcel業務が、さらに洗練されたものになることを確信しています。

タイトルとURLをコピーしました