Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.CountIfの条件を変数で

WorksheetFunction.CountIfの条件を変数で

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

WorksheetFunction.CountIfの条件を変数で

プログラミングを始めたばかりの躓きポイントの一つに、検索条件の指定があります。

検索・抽出するための条件の一部を、一旦変数に代入しておいて、その変数を使った条件指定をどう行えばいいのかで躓いてしまう方は少なくありません。完全一致条件については問題なくても、あいまい条件・部分一致で検索・抽出したい場合の記述に戸惑ってしまう方が少なくありません。

私の場合、Access VBAでプログラミングの勉強を始めたので、SQL文の部分一致WHERE句を作る際に、悩んだ記憶があります。

Excel VBAの場合、WorksheetFunctionオブジェクトのCountIfメソッドの引数指定で戸惑ってしまう方がいらっしゃるようです。

このサイト・インストラクターのネタ帳のアクセスログでも、
「worksheetfunction.countif 変数で始まる」
といった検索キーワードが見られます。

[スポンサードリンク]

WorksheetFunction.CountIfでワイルドカードを利用するサンプルマクロ

まず、変数を使わないコードを確認しておきましょう。
Sub CountIfであいまい検索する()
 MsgBox _
   WorksheetFunction.CountIf(Range("A1:A5"), "a*")
End Sub

上記のプロシージャを実行すると、A1:A5セルに入力されているデータのうち、「a」で始まる文字列が入力されているセルの数が、メッセージボックスに表示されます。

ワイルドカードは「*」だけでなく「?」も使えますから、上記プロシージャの、
   WorksheetFunction.CountIf(Range("A1:A5"), "a*")
の部分を、
   WorksheetFunction.CountIf(Range("A1:A5"), "a??" )
としてやれば、「a」で始まる3文字の文字列が入力されているセルの数が、
   WorksheetFunction.CountIf(Range("A1:A5"), "?a?")
としてやれば、3文字で真ん中が「a」のセルの数が表示されます。

WorksheetFunction.CountIfで変数を使ってあいまい条件を指定するサンプルマクロ

で、
「worksheetfunction.countif 変数で始まる」
という検索をなさった方への回答は以下のとおりです。

Sub CountIfで検索条件を変数で()
 Dim txt As String

 txt = "a"
 MsgBox _
   WorksheetFunction.CountIf(Range("A1:A5"), txt & "*")
End Sub

WorksheetFunction.CountIfメソッドの第2引数「txt & "*"」が、求めていらした書き方でしょう。

変数・txtに「a」が代入されているという条件の場合、
   WorksheetFunction.CountIf(Range("A1:A5"), txt & "*")
の部分を、
   WorksheetFunction.CountIf(Range("A1:A5"), txt & "??")
としてやれば、「a」で始まる3文字のセルの数が、
   WorksheetFunction.CountIf(Range("A1:A5"), "?" & txt & "?")
としてやれば、3文字で真ん中が「a」のセルの数が表示されます。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.CountIfの条件を変数で

「WorksheetFunction」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.