プログラミングを始めたばかりの躓きポイントの一つに、検索条件の指定があります。
検索・抽出するための条件の一部を、一旦変数に代入しておいて、その変数を使った条件指定をどう行えばいいのかで躓いてしまう方は少なくありません。完全一致条件については問題なくても、あいまい条件・部分一致で検索・抽出したい場合の記述に戸惑ってしまう方が少なくありません。
私の場合、Access VBAでプログラミングの勉強を始めたので、SQL文の部分一致WHERE句を作る際に、悩んだ記憶があります。
Excel VBAの場合、WorksheetFunctionオブジェクトのCountIfメソッドの引数指定で戸惑ってしまう方がいらっしゃるようです。
このサイト・インストラクターのネタ帳のアクセスログでも、
「worksheetfunction.countif 変数で始まる」
といった検索キーワードが見られます。
WorksheetFunction.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 変数で始まる」
という検索をなさった方への回答は以下のとおりです。
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」のセルの数が表示されます。
- Newer:明日の日付を目立たせる条件付き書式設定
- Older:CurrentRegionの行高を変更するには
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.CountIfの条件を変数で