Excel VBAにあるLike演算子の構文と例

次には、Like演算子の構文と、Like演算子の機能を説明するためのいくつかの例を説明します。Like演算子の構文を説明します。

Like演算子の構文

Like演算子は、指定された文字列が指定されたパターンに一致するかどうかを判別するために使用されます。構文は次のとおりです。

result=expression Like “pattern”
結果=<文字列> Like <パターン>

説明

1、<文字列>は、テキスト文字列またはテキスト文字列を含むセルへの参照です。これは、と比較される文字列であり、データ型はString(文字列型)です。

<パターン>のデータ型はString(文字列型)であり、下記に示すように、いくつかの特殊文字を文字列で使用でき、他の文字をそれらに一致させることができます。

<パターン>の文字が<文字列>に一致するテキスト

? 任意の1文字

* 0文字以上

#任意の単一の数字(0〜9)

[charlist]文字リスト内の任意の1文字

[!charlist]文字リストにない任意の1文字

[ ] 空白の文字列(「 「)

2、<結果>はブール型です。文字列が指定されたパターンに一致する場合、<結果>はTrueです。それ以外の場合、<結果>はFalseです。 文字列またはパターンがNullの場合、結果はNullになります。

3、Like演算子のデフォルトの比較モードはバイナリであるため、大文字と小文字が区別されます。 Option Compareステートメントを使用して、比較モードを変更できます。テキスト比較モードに変更した場合、大文字と小文字は区別されません。

4、[Charlist]は、パターン内の文字を文字列内の1文字とマッチングします。文字列には、数字を含む任意の種類の文字を含めることができます。[Charlist]では、ハイフン(-)を使用して文字列を生成し、文字とマッチングします。例えば、[A-D]は対応する位置のA、B、C、またはDに一致します。[A-D H-J]などの[Charlist]では複数の文字グループを生成できます。各文字グループは、順番に配置されている必要があります。Charlistの先頭または末尾にハイフン(-)を使用して、ハイフン自体と一致させます。例えば、[-H-N]はハイフン(-)またはHからN間にある任意の文字とマッチングします。

Charlistの1文字または文字グループの前に[!]を追加します。この文字をこの文字グループ以外の任意の文字に一致することを示します。例えば、[!H-N]は文字H-Nの範囲以外のすべての文字に一致します。[]の外で“!”を使用される場合、自体に一致するだけです。 一致する文字として任意の特殊文字を使用するには、[]に入力するだけでいいです。例えば、“?”疑問符に一致することを示します。

左括弧“[”、疑問符“?”、数字記号“#”、アスタリスク“*”などの特殊文字に一致させるため、括弧で囲むことができます。 右括弧“]”は、グループ内でそれ自体に一致させるために使用できませんが、グループ外の個別の文字として使用できます。

例でLike演算子を理解する

次のコードは、さまざまな状況でのLike演算子の結果を示しています。

Sub testLikePattern()
Dim bLike1 As Boolean, bLike2 As Boolean
Dim bLike3 As Boolean, bLike4 As Boolean
Dim bLike5 As Boolean, bLike6 As Boolean
Dim bLike7 As Boolean
bLike1 = "aBBBa" Like "a*a" '  Trueを返す
bLike2 = "F" Like "[A-Z]" '  Trueを返す
bLike3 = "F" Like "[!A-Z]" '  Falseを返す
bLike4 = "a2a" Like "a#a" '  Trueを返す
bLike5 = "aM5b" Like "a[L-P]#[!c-e]" '  Trueを返す
bLike6 = "BAT123khg" Like "B?T*" '  Trueを返す
bLike7 = "CAT123khg" Like "B?T*" '  Falseを返す
MsgBox "Like演算子に一致するさまざまな状況で返す結果:" & vbCrLf & " ""aBBBa"" Like ""a*a"" 結果はTrue." & _
vbCrLf & """F"" Like ""[A-Z]""結果はTrue." & _
vbCrLf & """F"" Like ""[!A-Z]""結果はFalse." & _
vbCrLf & """a2a"" Like ""a#a""結果はTrue." & _
vbCrLf & """aM5b"" Like ""a[L-P]#[!c-e]""結果はTrue." & _
vbCrLf & """BAT123khg"" Like ""B?T*""結果はTrue." & _
vbCrLf & """CAT123khg"" Like ""B?T*""結果はFalse."
End Sub

Like演算子の使用と例

[例1] Like演算子を使用して文字比較関数をカスタマイズします。

IsLike関数は非常に簡単です。テキスト文字列が指定されたパターンに一致する場合、関数はTrueを返します。コードは次のとおりです。

Function IsLike(text As String,pattern As String) As Boolean
IsLike= text Like pattern
End Function

この関数は2つの引数を受け入れます。

  • text:文字列または文字列を含むセルへの参照。
  • pattern(パターン):上記が示すような特殊文字を含む文字列。

関数の使用:関数の結果を表示するには、ワークシートに以下に示す式を入力します。

1、*は任意の数の文字に一致するため、次の式はTrueを返します。 最初の引数が「g」で始まるテキストの場合、Trueを返します。

=IsLike(「guitar」,」g*」)

2、?は任意の1文字に一致するため、次の式はTrueを返します。最初の引数が「Unit12」の場合、Falseを返します。

=IsLike(「Unit1」,」Unit?」)

3、最初の引数は2番目の引数にある1文字であるため、次の式はTrueを返します。

=IsLike(「a」,」[aeiou]」)

4、セルA1にa、e、I、o、u、A、E、I、O、またはUが含まれている場合、次の数式はTrueを返します。Upper関数を引数として使用する場合、 大文字と小文字を区別しません。

=IsLike(Upper(A1),Upper(「[aeiou]」))

5、セルA1に「1」で始まり、3文字の数字(つまり、100から199までの任意の整数)が含まれている場合、次の数式はTrueを返します。

=IsLike(A1,」1##」)

[例2] テキストボックスの入力結果を決定する

ワークブックを開き、ツールバーの「開発」タブをクリックし、Visual BasicをクリックとVBEエディターが開きます。又はAlt+F11キーを押してVBEエディターを開きます。 VBEエディターで、ツールバーの「挿入」タブから「ユーザーフォーム」を選択し、新しいユーザーフォームを作成します。コントロールツールボックスの[テキストボックス]コントロールと[ボタン]コントロールをクリックして、ユーザーフォームに[テキストボックス]と[ボタン]を配置します。そしてユーザーフォームでそれらのサイズと位置を合理的に調整し、ボタンのタイトルを「OK」に変更します。

PS:

会社の方はもうExcelで作成した固定形式でレポートを提出ました。非常にシンプルで、短時間で完成して提出できました。文字数が多くて、レポートにある一部のセルが規定の100文字を超えているため、すぐに返送されます。やり直すしかありません。当時、最初に頭に浮かんだのは、Excelが提供するLen関数でセル内の文字数を分かることですが、その後、よく考えました。Wordには文字数カウント機能がありますが、Excelにはありません。Wordの文字数カウント機能を模倣して、Excelのセルまたは選択したセル範囲の文字数をカウントできますか?さらに、セルまたは選択したセル範囲内の漢字、数字、文字などを分類して、カウントします。もちろん、これらはワークブック関数を使用して実現できます。次に説明する内容は、VBAを使用して上記の機能を実現することです。

Excelで文字数をカウントする

1、Lenワークブック関数で文字数をカウントする

'現在のセル内の文字数をカウントする
Sub TotalCellCharNum()
Dim i As Long
i = Len(ActiveCell.Value)
MsgBox "現在のセル内の文字数:" & Chr(10) & i
End Sub
'選択したセル範囲の文字数をカウントする
Sub TotalSelectionCharNum()
Dim i As Long
Dim rng As Range
For Each rng In Selection
i = i + Len(rng.Value)
Next rng
MsgBox "選択したセル範囲の文字数:" & Chr(10) & i
End Sub

2、Like演算子でより複雑な文字数をカウントする

'現在のセル内のテキストを分類して、文字数をカウントする
Sub SubTotalCellCharNum()
Dim str As String, ChineseChar As Long
Dim Alphabetic As Long, Number As Long
Dim i As Long, j As Long
j = Len(ActiveCell.Value)
For i = 1 To Len(ActiveCell)
str = Mid(ActiveCell.Value, i, 1)
If str Like "[一-龥]" = True Then
ChineseChar = ChineseChar + 1 '漢字を積算する
ElseIf str Like "[a-zA-Z]" = True Then
Alphabetic = Alphabetic + 1 '英文字を積算する
ElseIf str Like "[0-9]" = True Then
Number = Number + 1 '数字を積算する
End If
Next
MsgBox "現在のセル内にある文字数は" & j & "文字です。この中で:" & vbCrLf & "漢字:" & ChineseChar & "文字" & _
vbCrLf & "英文字:" & Alphabetic & "文字" & _
vbCrLf & "数字:" & Number & "文字", vbInformation, "テキストを分類して、カウントする"
End Sub
'選択したセル範囲内のテキストを分類して、文字数をカウントする
Sub SubTotalSelectionCharNum()
Dim str As String, ChineseChar As Long
Dim Alphabetic As Long, Number As Long
Dim i As Long, rng As Range, j As Long
For Each rng In Selection
j = j + Len(rng.Value)
For i = 1 To Len(rng)
str = Mid(rng.Value, i, 1)
If str Like "[一-龥]" = True Then
ChineseChar = ChineseChar + 1 '漢字を積算する
ElseIf str Like "[a-zA-Z]" = True Then
Alphabetic = Alphabetic + 1 '英文字を積算する
ElseIf str Like "[0-9]" = True Then
Number = Number + 1 '数字を積算する
End If
Next
Next
MsgBox "選択したセル範囲にある文字数は" & j & "文字です。この中で:" & vbCrLf & "漢字:" & ChineseChar & "文字" & _
vbCrLf & "英文字:" & Alphabetic & "文字" & _
vbCrLf & "数字:" & Number & "文字", vbInformation, "テキストを分類して、カウントする"
End Sub

ここでは、Like演算子を使用して指定された文字を検索します。

まとめ

上記にはLike演算子の関連知識を説明しました。コードを編集する過程で、Like演算子は柔軟に使用できます。例えば、文字列を比較してから、対応する統計を実行したり、さらに操作を実行したり、ユーザー入力が正しいかどうかを判断したり、プログラムが実行できるかどうかを判断したりするために使用できます。

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です