目次
インプリメンテーション ブイビーエー この記事では、Excelで文字列が別の文字列を含んでいるかどうかを確認する方法を紹介します。 ブイビーエー .
練習用テンプレートダウンロード
練習用Excelテンプレートは、こちらから無料でダウンロードできます。
文字列に値が含まれているかどうかを確認するVBA.xlsm
Excelで文字列が他の文字列を含んでいるかどうかを確認するVBAの6つのメソッド
このセクションでは、6つの効果的な方法をご紹介しています。 ブイビーエー を使用して、文字列が他の文字列を含むかどうかをチェックします。
1.文字列が部分文字列を含むかどうかを確認するVBA
以下はその例です。 InStr関数 を使えば、Excelで文字列が部分文字列を含んでいるかどうかを調べることができます。
ステップス
- プレス Alt + F11 キーボードから、またはタブで 開発者 -> Visual Basic を開く Visual Basic エディター .
- ポップアップ・コードウィンドウで、メニューバーから インサート -> モジュール .
- コードウィンドウで、次のコードをコピーして貼り付けます。
Public Sub ContainSub() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub
これであなたのコードは実行できるようになりました。
- 実行 マクロの
もし、あなたが の文字列が含まれる。 であればマッチングが見つかり、そうでなければマッチングが見つからなかったと返されます。
この例では、主文字列が " 映画:アイアンマン、バットマン、スーパーマン、スパイダーマン、ソー " には、" ハルク 「を返すかどうか。 ムービーが見つかりません の結果です。
2.文字列に数字が含まれているかどうかを確認するVBA
文字列に数字が含まれているかどうかを検索するには ブイビーエー のコードになります。
次の例では、映画名と一緒に数字を含む文字列を見つけることができます。
で文字列に数字が含まれているかどうかをチェックする手順 ブイビーエー を以下に示します。
ステップス
- 先ほどと同じように、開く Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
- コードウィンドウで、以下のコードをコピーして貼り付けます。
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- のSub Procedureではありません。 ブイビーエー プログラムを実行するために、これは User Defined Function (UDF)の略。 をワークシートで呼び出してタスクを実行します。 そこで、コードを書いたら 実行 ボタンをクリックすると セーブ ボタンをクリックすると、マクロファイルが保存されます。
- さて、目的のワークシートに戻り、先ほど作成したユーザー定義関数を ブイビーエー コード( 検索番号 と入力し,関数の括弧の中に,文字列の先頭の数字があるセルのセル参照番号を入力する(例. セルB5 ).
- プレス 入力 .
ブール値を取得します( 真 または 偽 ) の場合、セル内の文字列に数字が含まれていれば、次のようになります。 真 そうでなければ ファルス .
- セルを下にドラッグして フィルハンドル という数式を残りのセルに適用して、どの文字列に数字が入っていて、どの文字列に数字が入っていないのかをチェックします。
3.文字列から数字を抽出するVBA
ここでは、文字列の中に数字が含まれているかどうかを調べ、その数字を抽出して別のセルに配置する方法を学びます。
文字列に数字が含まれているかどうかを確認し、それを抽出する手順 ブイビーエー を以下に示します。
ステップス
- オープン Visual Basic エディター から デベロッパー タブと インサート a ユーザーフォーム 今回は、コードウィンドウの「挿入」タブから。
- 登場人物から ツールボックス ドラッグ&ドロップ コマンドボタン において ユーザーフォーム .
- ダブルクリック をクリックし、以下のコードをコピーして貼り付けてください。
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i.)) IsNumeric(数値の中点))1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If 次回のi iRow = iRow + 1Next myAccessary End Sub
- 実行 をクリックすると、目的のワークシートに移動します。
- コマンドボタンをクリック と入力すると、文字列から抽出された数値が得られます。
4.文字列が特定の文字を含んでいるかどうかを確認するVBA
この方法は、文字列中の部分文字列をチェックする方法とほぼ同様である。
以下は、その内容です。 インストル 関数を使って、文字列が特定の文字を含んでいるかどうかをExcelで調べることができます。
ステップス
- 先ほどと同じように、開く Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
- コードウィンドウで、以下のコードをコピーして貼り付けます。
Public Sub ContainChar() If InStr("Movie: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Letter found" Else MsgBox "Letter not found" End If End Sub
これであなたのコードは実行できるようになりました。
- 実行 を選択した場合。 文字列には、文字 であればマッチングが見つかり、そうでなければマッチングが見つからなかったと返されます。
この例では、主文字列が " 映画:アイアンマン、バットマン、スーパーマン、スパイダーマン、ソー " には、文字 " Z 「を返すかどうか。 文字が見つかりません の結果です。
5.文字列の範囲に別の文字列が含まれているかどうかを確認するVBA
これまで、与えられた文字列が他の文字列を含むかどうかを調べる方法を学んできましたが、ここでは、以下のデータセットを例として、文字列の範囲に部分文字列が含まれるかどうかを調べる方法を学びます。
ステップス
- オープン Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
- コードウィンドウで、以下のコードをコピーして貼り付けます。
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub
これであなたのコードは実行できるようになりました。
- 実行 を表示します。
の範囲内であれば、問題ありません。 の文字列が含まれる。 であればマッチングが見つかり、そうでなければマッチングが見つからなかったと返されます。
6.文字列から文字列を抽出するVBA
ここでは、文字列が特定の部分文字列を含んでいるかどうかを調べ、それを別のセルに抽出する方法について説明します。
で始まる名前の情報を抽出します。 クリス " を以下のデータセットから取得した。
ステップス :
- オープン Visual Basic エディター から デベロッパー タブと インサート a モジュール をコードウィンドウに表示します。
- コードウィンドウで、以下のコードをコピーして貼り付けます。
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" &), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count ) = Range("B" & i & ":D" & i).Value End If Next i End Sub
これであなたのコードは実行できるようになりました。
- 実行 を表示します。
で始まる名前のみ。 クリス " があらかじめ設定されたセルに格納されます。