Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6473 / 13646 ツリー ←次へ | 前へ→

【45019】VBAでの配列数式でのカウントについて モンロー 06/12/10(日) 11:17 質問[未読]
【45021】Re:VBAでの配列数式でのカウントについて ichinose 06/12/10(日) 12:09 発言[未読]
【45066】Re:VBAでの配列数式でのカウントについて モンロー 06/12/11(月) 22:23 お礼[未読]

【45019】VBAでの配列数式でのカウントについて
質問  モンロー  - 06/12/10(日) 11:17 -

引用なし
パスワード
   シート上では
{sum(if((A:A)=2)*(B:B)=5),1,0))}
というような配列数式を使うことにより、
A列が2で、B列が5の行をカウントできるのですが、
VBAでは2列以上の条件がある場合はどのようにカウントすればよい
のでしょうか?
ちなみにだめだろうなと、思いつつ下記のコードを書いてみましたが、
案の定だめでした。
Application.WorksheetFunction.{sum(if((A1:A25)=2)*(B1:B25)=5),1,0))}

【45021】Re:VBAでの配列数式でのカウントについて
発言  ichinose  - 06/12/10(日) 12:09 -

引用なし
パスワード
   ▼モンロー さん:
こんにちは。

>シート上では
>{sum(if((A:A)=2)*(B:B)=5),1,0))}
>というような配列数式を使うことにより、
>A列が2で、B列が5の行をカウントできるのですが、
↑これは、セルに入れても正しい結果は、表示されませんけどね!!
(列全体の指定は配列では、出来なかったと思います)。


>VBAでは2列以上の条件がある場合はどのようにカウントすればよい
>のでしょうか?
>ちなみにだめだろうなと、思いつつ下記のコードを書いてみましたが、
>案の定だめでした。
>Application.WorksheetFunction.{sum(if((A1:A25)=2)*(B1:B25)=5),1,0))}

上記の数式なら、Evaluateを使用すると可能です。
Sub test()
  Dim func As String
  func = "=sum((A1:A25=2)*(B1:B25=5))"
'If関数は要らないのでとりました
  MsgBox Application.Evaluate(func)
End Sub

確認してください。
但し、セルで結果を出してくれる全ての配列数式が
Evaluateで実現できるわけではないのですから、注意してください。

【45066】Re:VBAでの配列数式でのカウントについて
お礼  モンロー  - 06/12/11(月) 22:23 -

引用なし
パスワード
   動作確認いたしました。
配列に限界があるのを始めて知りとても勉強になりました。
ありがとうございました。

6473 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free