Excel VBA

【Excel VBA】あいまいな条件で比較【ワイルドカードを使用】

本記事の内容

Excel VBAマクロであいまいな条件比較を行う方法をご紹介

→ ワイルドカードを使用

 

こんな方におすすめ
  • Excel VBAマクロで使用できる様々な条件比較を知りたい方
  • Excel VBAマクロで表現できる処理の幅を広げたい方
  • VBA勉強中の方

 

ワイルドカードとは?【一覧あり】

ワイルドカードとは、

特定の文字、文字列の代用として使用できる記号

 です。

 

ワイルドカードには下記の種類があります。

<ワイルドカード一覧>

記号意味使用例結果
*0文字以上の任意の文字列“Sample” Like “*a*” → “a”を含む文字列TRUE
?任意の1文字“Sample” Like “S?????” → “S”で始まる6文字の文字列TRUE
#任意の1数字“12S” Like “##S” → 最初の2文字が数字で”S”で終わる文字列TRUE
[ ][ ]内に指定した1文字“S” Like “[SAMPLE]” → S, A, M, P, L, Eのいずれかの1文字TRUE
[!][ ]内に指定した文字以外の1文字“S” Like “[!SAMPLE]” → S, A, M, P, L, E以外の1文字TRUE
[-][ ]内に指定した範囲の1文字“E” Like “[A-G]” → A~Gまでの1文字TRUE

 

使用例 : ワイルドカードを使用して文字列を比較

ワイルドカードを用いた比較には、「Like」演算子を使用します。

構文は下記の通りです。

Like演算子の構文

文字列 Like 文字パターン

 

ワイルドカードを用いたソースコードの例は下記の通りです。

<サンプルコード>

Sub sample()

    '比較する文字列を定義
    Dim text As String

    '*を用いた比較
    text = "Sample"
    If text Like "*a*" Then
        'Sampleはaを含むためこちらが選ばれる
        Debug.Print text & "はaを含みます"
    Else
        Debug.Print text & "はaを含みません"
    End If
    
    '?を用いた比較
    text = "Sample"
    If text Like "S??" Then
        Debug.Print text & "は先頭の文字がSの3文字の文字列です"
    Else
        'Sampleは6文字のためこちらが選ばれる
        Debug.Print text & "は先頭の文字がSの3文字の文字列ではありません"
    End If
    
    '#を用いた比較
    text = "12S"
    If text Like "##S" Then
        '12Sは最初に2文字の数字、最後がSの3文字のためこちらが選ばれる
        Debug.Print text & "は最初に2文字の数字、最後がSの3文字の文字列です"
    Else
        Debug.Print text & "は最初に2文字の数字、最後がSの3文字の文字列ではありません"
    End If
    
    '[]を用いた比較
    text = "E"
    If text Like "[ABC]" Then
        Debug.Print text & "はA, B, Cのいずれかです"
    Else
        'EはA, B, Cのいずれでもないためこちらが選ばれる
        Debug.Print text & "はA, B, Cのいずれでもありません"
    End If
    
    '[!]を用いた比較
    text = "E"
    If text Like "[!ABC]" Then
        'EはA, B, Cのいずれでもないためこちらが選ばれる
        Debug.Print text & "はA, B, Cのいずれでもありません"
    Else
        Debug.Print text & "はA, B, Cのいずれかです"
    End If
    
    '[-]を用いた比較
    text = "E"
    If text Like "[A-G]" Then
        'EはA~Gのいずれかのためこちらが選ばれる
        Debug.Print text & "はA~Gのいずれかです"
    Else
        Debug.Print text & "はA~Gのいずれでもありません"
    End If

End Sub

 

<マクロ実行結果>

<マクロ実行結果>

 

以上がワイルドカードを使用してあいまいな条件で比較する方法となります。

ここまでご覧いただきありがとうございました。

 

初心者におすすめの書籍はこちら

 

VBAに詳しくなりたい方におすすめの書籍はこちら

 

 

ABOUT ME
かめぞう
かめぞう
はじめまして。 かめぞうです。ソフトウェア開発会社に勤務する現役エンジニアです。私がエンジニアを続ける中で得た学び、考えを発信しています。リクエストや改善要望など、お気づきの点があればお気軽にご連絡ください。