HOME > 即効テクニック > Excel VBA > シート操作関連のテクニック > 全てのシートから指定された文字列を検索する(CountIf関数)

即効テクニック

シート操作関連のテクニック

全てのシートから指定された文字列を検索する(CountIf関数)

( - )
サンプルでは、全シートを対象に、インプットボックスで指定された文字列を検索し、総数をメッセージボックスに表示しています。 
検索範囲から指定された文字列を検索するために、ワークシート関数のCountIf関数を使っています。 CountIf関数は、指定された範囲に含まれるセルのうち、検索条件に一致するセルの個数を返してくれます。 

●準備●

新規ブックを用意して標準モジュールを挿入し、サンプルマクロを貼り付けてください。 
●サンプル●
Sub Sample() 

    Dim myWS As Object 
    Dim myCnt As Integer 
    Dim AllSu As Integer 
    Dim target As Variant 

    '<検索結果保管先を初期化します。> 
    AllSu = 0 

    '<検索する文字列を指定する入力用のダイアログボックスを表示します。> 
    target = Application.InputBox(Prompt:="検索する文字を入力して下さい。") 

    '<キャンセルか未入力ではなかったら検索します。> 
    If target <> False And target <> "" Then '←(1) 

    '<全てのシートを対象に検索を行います。> 
    For Each myWS In Sheets 

    '<使われているセル範囲に含まれるセルのうち、 
    '検索条件に一致するセルの個数を取得します。> 
    myCnt = WorksheetFunction.CountIf(myWS.UsedRange, target) '←(2) 

    '<検索条件に一致したセルの個数をカウントします。> 
    AllSu = AllSu + myCnt 
    Next myWS 

    '<全てのシートの検索が終わったら、結果を表示します。> 
    If AllSu = 0 Then 
      MsgBox target & "は見つかりませんでした。" 
    Else 
      MsgBox target & "は" & AllSu & "個あります。" 
    End If 

   End If 

End Sub 
●補足説明● 
  1. InputBoxメソッドは、ユーザー入力用のダイアログボックスを表示します。 そして、表示したダイアログボックスに入力された情報を返します。 このメソッドによるダイアログボックスには、[OK]ボタンと[キャンセル]ボタンが表示されます。 [OK]ボタンをクリックすると、ダイアログボックスに入力した値が返されます。 [キャンセル]ボタンをクリックすると、Falseが返されます。
  2. COUNTIF関数は、VisualBasicで使用できるワークシート関数です。 指定された範囲に含まれるセルのうち、検索条件に一致するセルの個数を返します。 <構文>  COUNTIF(範囲, 検索条件)  範囲  :セルの個数を求めるセル範囲を指定します。  検索条件:計算の対象となるセルを定義する条件を、数値、式、または文字列で指定します。  式および文字列を指定する場合は、">32"、"Windows"のように、半角のダブルクォーテーション(")で囲む必要があります。