大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで全角の文字列を半角に変換する方法と、半角の文字列を全角に変換する方法についてご紹介します。全角と半角の変換はStrConvを使うとできます。全角もしくは半角に変換する具体例と、StrConvを使った実践例について説明します。

はじめに

この記事では、全角の文字列を半角に変換する方法と、半角の文字列を全角に変換する方法についてご紹介します。

全角と半角を変換したい場合は、StrConvが使えます。

StrConvが使える場面として、文字列が全角と半角で統一されていないけど、文字列を比較、検索、判定したい場合です。

StrConvを使えば、すべて半角に統一して文字列を比較したりすることができます。

では具体例をあげて解説していきます。

この記事で紹介すること

  • 文字列を半角へ変換する方法
  • 文字列を全角へ変換する方法

目次

ポイントとなるVBAコード

初めにポイントとなるVBAコードを記載しておきます。

'半角へ変換
b = StrConv(a, vbNarrow)
'全角へ変換
b = StrConv(a, vbWide)

では解説していきます。

VBAのStrConvで文字列を半角に変換(vbNarrow)

アルファベットや数字などで全角の文字列を半角に変換する方法を説明します。

半角に変換、全角に変換はVBA関数のStrConvを使うとできます。

使い方

全角の文字列を半角に変換する方法は次のようになります。

『変換後の文字列 = StrConv(文字列, vbNarrow)』

文字列全体をみて、アルファベットもしくは数字で全角の文字列があれば、半角に変換してくれます。

いくつか全角の文字列を半角に変換する具体例を挙げていきます。

全角を半角に変換

まずは、すべてが全角である文字列を半角に変換してみます。

文字列『ABC123』を半角にするVBAコードです。

Sub TEST1()
    
    a = "ABC123"
    
    '半角へ変換
    b = StrConv(a, vbNarrow)
    
    MsgBox b
    
End Sub

変換した結果は、こちらになります。

半角に変換した結果

StrConvですべてが全角である文字列を半角に変換した結果

すべて半角の文字列『ABC123』に変換できました。

全角と半角を混ぜて半角に変換

もちろん、全角と半角を混ぜても、半角に変換することができます。

文字列『ABCDEF123』を半角に変換してみます。

Sub TEST2()
    
    a = "ABCDEF123"
    
    '半角へ変換
    b = StrConv(a, vbNarrow)
    
    MsgBox b
    
End Sub

半角へ変換した結果をみてみまます。

全角と半角を混ぜて半角に変換

StrConvで全角と半角が混じった文字列を半角に変換した結果

半角の文字列『ABCDEF123』に変換できました。

全角と半角が混じっているときもちわるいですよね。

半角へ変換してすっきりしました。

全角スペースを入れて半角に変換

全角スペースを半角スペースに変換することもできます。

全角スペースが入った文字列『ABC DEF』を半角に変換してみます。

Sub TEST3()
    
    a = "ABC DEF"
    
    '半角へ変換
    b = StrConv(a, vbNarrow)
    
    MsgBox b
    
End Sub

変換した結果をみてみます。

全角スペースを含む文字列を半角に変換

StrConvで全角スペースを半角スペースに変換した結果

全角スペースも含めて全角文字が半角に変換されました。

VBAのStrConvで文字列を全角に変換(vbWide)

アルファベットや数字などの半角文字を全角に変換する方法を説明します。

使い方

半角を全角に変換する方法するには、

『変換後の文字列 = StrConv(文字列, vbWide)』でできます。

いくつか例を挙げていきます。

半角を全角に変換

まず、半角の文字列を全角に変換してみます。

文字列『ABC123』を全角に変換するVBAコードです。

Sub TEST4()
    
    a = "ABC123"
    
    '全角へ変換
    b = StrConv(a, vbWide)
    
    MsgBox b
    
End Sub

全角に変換した結果をみてみます。

全角に変換した結果

StrConvで半角を全角に変換した結果

すべての文字を全角に変換できています。

全角と半角を混ぜて全角に変換

全角と半角を混ぜても、もちろん、全角に変換することができます。

文字列『ABCDEF123』を全角に変換してみます。

Sub TEST5()
    
    a = "ABCDEF123"
    
    '全角へ変換
    b = StrConv(a, vbWide)
    
    MsgBox b
    
End Sub

結果をみてみます。

全角と半角を混ぜて全角に変換

StrConvで半角と全角が混じった文字列をすべて全角に変換した結果

すべて全角に変換できました。すっきりです。

半角スペースを入れて全角に変換

半角スペースを全角スペースに変換もできます。

半角スペースを含む文字列『ABC DEF』を全角に変換してみます。

Sub TEST6()
    
    a = "ABC DEF"
    
    '全角へ変換
    b = StrConv(a, vbWide)
    
    MsgBox b
    
End Sub

結果をみてみます。

半角スペースを含む文字列を全角に変換

StrConvで半角スペースを全角スペースに変換した結果

半角スペースを含む文字列がすべて全角に変換されました。

実践例

実践例を少し挙げておきます。

数字を全角に変換して強調させる

数字を全角に変換して数字を強調させたい、という場合に使えます。

次のようなVBAコードです。

Sub TEST7()
    
    With ActiveSheet
        '半角へ変換
        .Cells(1, 1) = StrConv(.Cells(1, 1), vbWide)
    End With
    
End Sub

文字列を全角に変換するコードです。

結果をみてみます。

数字を全角に変換

数字を全角文字列に変換した結果

数字が全角になって金額が見やすくなります。

変数を半角に統一する

技術資料などを作っていると変数を記載するところがでてきます。

その変数が、以前に誰かが作成したレポートなどで全角になっている場合があります。

全角で記載されている変数に対して、変数は半角で記載するでしょ。と思っている場合に使えます。

次のVBAコードでできます。

Sub TEST8()
    
    With ActiveSheet
        '全角へ変換
        .Cells(1, 1) = StrConv(.Cells(1, 1), vbNarrow)
    End With
    
End Sub

結果です。

変数を半角に変換

変数を全角から半角に変換して統一した結果

すべて半角に変換されました。

変数は半角で記載する派です。

すべて半角へ変換して比較

文字列を比較したい場合に条件式『if 〇 = △ then』などを使ったります。

しかし、比較したい文字列が全角と半角統一されていない場合、比較ができません。

このような場合に、すべて半角に変換できるStrConvが使えます。

次のようなVBAコードです。

Sub TEST9()
        
    a = StrConv("ABC", vbNarrow) '半角へ変換
    b = StrConv("ABC", vbNarrow) '半角へ変換
    
    '文字列を比較
    If a = b Then
        MsgBox "一致します"
    End If
    
End Sub

全角『ABC』と半角『ABC』を比較しています。

結果です。

半角に変換して比較

すべて半角に変換して比較した結果

結果は、『一致します』となりました。

すべて半角に変換すれば、文字列を比較することもできます。

もちろんすべて全角に変換でもいいです。

すべて半角に変換してInStrで検索

文字列を検索したい場合でも同様に、全角と半角が統一されていないとInStrで検索することができません。

このような場合に、文字列をすべて半角に変換すれば、文字列をInStrで検索することができます。

次のようなVBAコードです。

Sub TEST10()
    
    a = StrConv("ABC", vbNarrow) '半角へ変換
    b = StrConv("A", vbNarrow) '半角へ変換
    
    '文字列を検索
    If InStr(a, b) > 0 Then
        MsgBox "含まれます"
    End If
    
End Sub

全角文字列『ABC』から半角文字『A』を検索しています。

結果です。

半角に変換して検索

全角文字列から半角文字をInStrで検索した結果

結果は、『含まれます』になりました。

元の文字列と検索する文字列の両方を、半角に変換すれば検索もできます。

すべて半角に変換してLikeで判定

先ほどと同じように、全角と半角が混在している場合には、Likeで文字列を判定することができません。

すべて半角に変換すれば、Likeで判定することができます。

次のような感じです。

Sub TEST11()
        
    a = StrConv("ABC", vbNarrow) '半角へ変換
    b = StrConv("A*", vbNarrow) '半角へ変換
    
    '文字列を判定
    If a Like b Then
        MsgBox "一致します"
    End If
    
End Sub

全角文字列『ABC』を演算子を使った『A*』と一致するかを判定しています。

結果です。

半角に変換して判定

全角文字列と半角文字列が一致するかをLikeを使って判定した結果

結果は、『一致します』となります。

文字列を判定、比較、検索する場合に、全角と半角が統一されていない場合は、StrConvで半角もしくは全角に変換して文字を統一させましょう。

おわりに

この記事では、全角の文字列を半角に変換する方法と、半角の文字列を全角に変換する方法についてご紹介しました。

全角と半角を変換したい場合は、StrConvが使えます。

文字列が全角と半角で統一されていないけど、文字列を比較、検索、判定したい場合は、StrConvで文字列をすべて半角に統一するとできます。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す