★VBA★CountIFsで手こずった話 のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- ★VBA★CountIFsで手こずった話 へ行く。
- 1 (2019-12-27 (金) 12:01:03)
- 2 (2019-12-27 (金) 13:25:30)
やりたいこと
・表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
上のような二つの表があったとします。表の左の番号は行番号、上のA,B,K,Lは列番号です。
aと〇両方記入されている行数を数え、別の表にその結果を入力したいです、VBAを使って。
br
表1のみで条件にあてはまる行数を数える
まず、複数条件に当てはまる数を数えたい場合、関数ならCountifsを使うと思います。
じゃあそれをそのままVBAに使えないの?と思いました。
br
br
br
使えませんでした。
br
しかし、ある文字を付け加えることで使えるようになるそうです。
それが
br
WorksheetFunction.
br
です。
br
※使ってるバージョンによっては使えないらしいです。私は2013です。
br
br
結果の入力先を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の結果を足す
br
表1の数は入力できたので次は表2の数と足します。
Cells(5, 16).Value = WorksheetFunction.CountIfs(Range(a1":a5"), "a",Range("b1:b5"), "〇") + WorksheetFunction.CountIfs(Range(k1":k4"), "a",Range("L1:L4"), "〇")
br
単純に式を+しただけです。
br
この式に行きつくまでのことをだいぶ端折ってしまいましたが、実際は以下のエラーに手こずっていました。