Sub TEST1()
'商品が「B」で、支店が「東京」をカウント
Range("D2") = WorksheetFunction.CountIfs(Range("A:A"), "B", Range("B:B"), "東京")
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「"B"」と「"東京"」に一致するセルをカウント
「"B"」と「"東京"」に一致するセルをカウントできました。
ワイルドカードを使う
CountIfs関数でワイルドカードを使ってみます。
ワイルドカードには、次の2つがあります。
「*」:なんでもいい
「?」:なんでもいい。ただし1文字。
ワイルドカードを使って、商品が「Bを含む」値で、支店が「東京」のセルをカウントしてみます。
Sub TEST2()
'商品が「Bを含む」値で、支店が「東京」をカウント
Range("D2") = WorksheetFunction.CountIfs(Range("A:A"), "B*", Range("B:B"), "東京")
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「ワイルドカード」を使う
「ワイルドカード」を使って、セルをカウントできました。
比較演算子を使う
CountIfs関数で「比較演算子」を使ってみます。
比較演算子には次の種類があります。
「">値"」 :値より大きい
「"<値"」 :値より小さい
「">=値"」:値以上
「"<=値"」:値以下
「"<>値"」:値以外
「""」 :空白
「"<>"」 :空白以外
比較演算子を使って、「2021/8/1」~「2021/9/3」のセルをカウントしてみます。
Sub TEST3()
'「2021/8/1」~「2021/9/3」をカウント
Range("C2") = WorksheetFunction.CountIfs(Range("A:A"), ">=2021/8/1", Range("A:A"), "<=2021/9/3")
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「比較演算子」を使う
「比較演算子」を使って、一致するセルをカウントできました。
変数を使う
CountIfs関数で、変数を使ってみます。
Sub TEST4()
a = "B"
b = "東京"
'商品が「B」で、支店が「東京」をカウント
Range("D2") = WorksheetFunction.CountIfs(Range("A:A"), a, Range("B:B"), b)
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「変数」を使う
「変数」を使って、CountIfs関数でセルをカウントできました。
セルの値を使う
CountIfs関数に、セルの値を使って条件を指定することもできます。
Sub TEST5()
'商品が「B」で、支店が「東京」をカウント
Range("E4") = WorksheetFunction.CountIfs(Range("A:A"), Range("E1"), Range("B:B"), Range("E2"))
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「セルの値」を使う
「セルの値」を使って条件を指定して、セルをカウントできました。
クロス集計表を作成する
CountIfs関数は、個数を集計する「クロス集計表」を作成する際にかなり便利に使えます。
Sub TEST6()
'「商品」をループ
For i = 1 To 2
'「支店」をループ
For j = 1 To 2
With Range("D1")
'「商品」と「支店」が一致する数をカウント
.Offset(i, j) = WorksheetFunction.CountIfs(Range("A:A"), .Offset(i, 0), Range("B:B"), .Offset(0, j))
End With
Next
Next
End Sub
ポイントは「行と列の条件」をループして、個数を入力するところです。
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
クロス集計表を作成する
「クロス集計表」を作成できました。
埋め込み数式を使ってCountIfs関数を使う
CountIfs関数をVBAで使うもう一つの方法が、「数式を埋め込む」方法です。
セルに数式を埋め込んでCountIfs関数を使う
「数式を埋め込んで」Countifs関数を使ってみます。
セルに入力する数式を「文字列」としてセルに入力することで、使うことができます。
Sub TEST7()
'商品が「B」で、支店が「東京」をカウント
Range("D2") = "=COUNTIFS(A:A,""B"",B:B,""東京"")"
Range("D2").Value = Range("D2").Value '値に変換
End Sub
ポイントは、「"B"」は、「""B""」のように「""」で囲ってあげることです。
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「"B"」と「"東京"」に一致するセルをカウント
「"B"」と「"東京"」に一致するセルをカウントできました。
数式をコピーして使うと簡単
数式を埋め込む際は、一度セルに数式を入力して、「数式をコピー」して使うと簡単です。
入力が正しいことを確認できれば、あとは数式をコピーします。
ワイルドカードを使う
CountIfs関数でワイルドカードを使って、数式を埋め込んでみます。
商品が「Bを含む」値で、支店が「東京」のセルをカウントします。
Sub TEST8()
'商品が「Bを含む」値で、支店が「大阪」の数をカウント
Range("D2") = "=COUNTIFS(A:A,""B*"",B:B,""東京"")"
Range("D2").Value = Range("D2").Value '値に変換
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「ワイルドカード」を使う
「ワイルドカード」を使って、条件一致のセルをカウントできました。
比較演算子を使う
「比較演算子」を使ったCountIfs関数の数式を埋め込んでみます。
「2021/8/1」~「2021/9/3」のセルをカウントしてみます。
Sub TEST9()
'「2021/8/1」~「2021/9/3」をカウント
Range("C2") = "=COUNTIFS(A:A,"">=2021/8/1"",A:A,""<=2021/9/3"")"
Range("C2").Value = Range("C2").Value '値に変換
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「比較演算子」を使う
「比較演算子」を使って、条件に一致するセルをカウントできました。
変数を使う
CountIfs関数を埋め込む方法で、「変数」を使ってみます。
ポイントは、変数に入力する際に「a = """B"""」のように「""」で囲うことです。
Sub TEST10()
a = """B""" '商品が「B」
b = """東京""" '支店が「東京」'商品が「B」で、支店が「東京」の数をカウント
Range("D2") = "=COUNTIFS(A:A," & a & ",B:B," & b & ")"
Range("D2").Value = Range("D2").Value '値に変換
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「変数」を使う
「変数」を使って、条件一致のセルをカウントできました。
セルの値を使う
セルの値を条件とするCountIfs関数を埋め込んでみます。
Sub TEST11()
'商品が「B」で、支店が「東京」の数をカウント
Range("E4") = "=COUNTIFS(A:A,E1,B:B,E2)"
Range("E4").Value = Range("E4").Value '値に変換
End Sub
条件をセルに入力しておきます。
条件をセルに入力
では、VBAコードを実行してみます。
「セルの値」を使う
「セルの値」を条件としてCountIfs関数で、条件一致のセルをカウントできました。
クロス集計表を作成する
CountIfs関数を埋め込むと、個数を集計する「クロス集計表」が簡単に作成できます。
Sub TEST12()
'「商品」と「価格」が一致する価格の合計
Range("E2:F3") = "=COUNTIFS($A:$A,$D2,$B:$B,E$1)"
Range("E2:F3").Value = Range("E2:F3").Value '値に変換
End Sub