★VBA★CountIFsで手こずった話 のバックアップソース(No.1)

**やりたいこと [#r92708e1]

・表1

    A B  
|1|a|〇|
|2|a|〇|
|3|a|〇|
|4|a|×|
|5|b|〇|
#br
#br
・表2

    K   L

|1|a|〇|
|2|b|×|
|3|a|〇|
|4|b|×|
#br
&size(16){上のような二つの表があったとします。表の左の番号は行番号};&size(16){、上のA,B,K,Lは列番号です。};

&size(16){aと〇両方記入されている行数を数え、別の表にその結果を入力したいです、};&size(16){VBAを使って。};
#br
**&size(16){表1のみで条件にあてはまる行数を数える}; [#q402d12c]

まず、複数条件に当てはまる数を数えたい場合、関数ならCountifsを使うと思います。

じゃあそれをそのままVBAに使えないの?と思いました。
#br
#br
#br
''使えませんでした。''
#br
しかし、ある文字を付け加えることで使えるようになるそうです。

それが
#br
&size(18){''WorksheetFunction.''};
#br
&size(16){です。};
#br
&size(16){※使ってるバージョンによっては使えないらしいです。私は2013です。};
#br
#br
&size(16){結果の入力先をP5として作成するとこんな感じでできました。};

''Cells(5, 16).Value = WorksheetFunction.CountIfs(Range(a1":a5"), "a",Range("b1:b5"), "〇"'')''
#br
左辺は結果の入力先です。

ここを最初、「p5.Value」にしていました。しかし
#br
''「424 オブジェクトが必要です」''

とのエラーがでてしまいました。なにが悪いのかわからん。と憤慨しつつ、とりあえずここをCells(,)にしました。
#br
なにが悪かったのかは後で調べるとして...
#br
#br
**表1の結果と表2の結果を足す [#v555ab10]
#br
表1の数は入力できたので次は表2の数と足します。

''&size(16){Cells(5, 16).Value = WorksheetFunction.CountIfs(Range(a1":a5"), "a",};Range("b1:b5"), "〇"&size(16){)  +  };&size(16){WorksheetFunction.CountIfs(Range(k1":k4"), "a",};Range("L1:L4"), "〇"&size(16){)};''
#br
&size(16){単純に式を+しただけです。};
#br
&size(16){この式に行きつくまでのことをだいぶ端折ってしまいましたが、実際は以下のエラーに手こずっていました。};
#br
#br
#br