解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

Excel VBA で全角英数を半角英数に変換する




こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。




この記事の目次




目的


Excel でデータベースの様な資料を作成していた時、急いで作っていた事もあって、英数文字が全角と半角の混合状態になってしまいました。
かっこ悪いし、何より私自身が気持ち悪くて仕方ない。
そこで、 VBA でサクッと最後に修正してやろうと思って全角英数文字を半角英数文字に変換する VBA を作成します。




関数

ソースコード

全角英数文字を半角英数文字に変換したいシートを表示させている状態でマクロを起動すると、全角英数文字を半角英数文字に変換されます。

Sub 全角英数2半角英数()
  
   ' 使用済みレンジの取得
   Set rng使用済 = ThisWorkbook.ActiveSheet.UsedRange
  
   ' 全角英数を半角英数に変換する
   For Each セル In rng使用済
     
      ' 文字列取得
      調査対象 = セル.Value
     
      ' セルが空では無いなら
      If Len(調査対象) > 0 Then
        
         ' 調査対象を1文字ずつ調べていく
         返却文字列 = ""
         For i = 1 To Len(調査対象)
           
            ' 文字の抽出
            文字 = Mid(調査対象, i, 1)
           
            ' 全角英数なら
            If ("0" <= 文字 And 文字 <= "9") Or ("A" <= 文字 And 文字 <= "Z") Or ("a" <= 文字 And 文字 <= "z") Then
              
               If 返却文字列 = "" Then
                  返却文字列 = StrConv(文字, vbNarrow)
               Else
                  返却文字列 = 返却文字列 & StrConv(文字, vbNarrow)
               End If
              
            ' 全角英数以外なら
            Else
              
               返却文字列 = 返却文字列 & 文字
              
            End If
           
         Next i
        
         セル.Value = 返却文字列
        
      End If
      
   Next
  
   ' サブルーチン完了
   MsgBox "全角英数2半角英数が完了しました。"
  
End Sub

使い方

全角英数文字を入力した Excel を図1に示します。

また、マクロを選択・実行する状態の Excel を図2に示します。

最後にマクロを実行して全角英数文字が半角英数文字に変換された状態の Excel を図3に示します。

図1 全角英数

図2 全角英数

図3 全角英数




コメント

このマクロがあれば Excel で全角英数と半角英数を気にする必要がなくなります。
よりスピード重視の資料作成が出来そうです。




以上