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
かめぞう
はじめまして。 かめぞうです。組込ソフトウェア開発会社に勤務する現役エンジニアをしています。私が買ってよかったもの、人生設計、サラリーマン生活についてなど、テーマを絞らず発信しています。リクエストや改善要望など、お気軽にご連絡ください。