Excel VBA質問箱 IV

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

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


23378 / 76732 ←次へ | 前へ→

【58721】複数条件での合計やカウントをするマクロを作りたい
質問  あい  - 08/11/5(水) 21:47 -

引用なし
パスワード
   また、宜しくお願い致します。
色々調べてみて、データベース関数だとちょっと使い勝手が悪いので、下記のような関数を作ってみました。

Sheet2!J2=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*
(Sheet1!L202:L65536=Sheet2!C2)*(Sheet1!P202:P65536>0)*
(-5%<Sheet1!M202:M65536)*(Sheet1!M202:M65536<=-4%)*
(-10%<Sheet1!N202:N65536)*(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

で、Ctrl + Shift + Enter で確定させてカウントや合計を出しています。
が、

Sheet2!K2=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536<0)*(-5%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-4%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

Sheet2!L2=SUM(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536>0)*(-5%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-4%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

Sheet2!M2=SUM(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536<0)*(-5%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-4%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

Sheet2!N2=MIN(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536<0)*(-5%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-4%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

といった按配で、Sheet1!P列が正か負かによって他にも集計しなければならない項目があります。
更に各検索項目の検索条件毎(パーセンテージの刻みとか)に集計したいので、

Sheet2!J3=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536>0)*(-4%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-3%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

Sheet2!J4=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536>0)*(-3%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-2%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!P202:P65536))

Sheet2!J10=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536>0)*(-4%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-3%)*(-9%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-8%),Sheet1!P202:P65536))

Sheet2!J11=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!P202:P65536>0)*(-3%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-2%)*(-9%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-8%),Sheet1!P202:P65536))

という風になる上、集計したいデータもP列だけでなく、Q列もR列も…といった感じで

Sheet2!Y2=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!Q202:Q65536>0)*(-5%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-4%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!Q202:Q65536))

Sheet2!Z2=COUNT(IF((Sheet1!J202:J65536=Sheet2!A2)*
(Sheet1!K202:K65536=Sheet2!B2)*(Sheet1!L202:L65536=Sheet2!C2)*
(Sheet1!Q202:Q65536<0)*(-5%<Sheet1!M202:M65536)*
(Sheet1!M202:M65536<=-4%)*(-10%<Sheet1!N202:N65536)*
(Sheet1!N202:N65536<=-9%),Sheet1!Q202:Q65536))

なんてのも必要になってきます。

Sheet1!J202:J65536=Sheet2!A2
Sheet1!K202:K65536=Sheet2!B2
Sheet1!L202:L65536=Sheet2!C2

この3つの検索条件に関しては、集計用のシートに予めA〜C列には検索条件を入れておき、シートを分けて集計したいと考えています。

Sheet1のデータはどんどん入れ替えて、様々なデータの集計を取りたいと思います。


一番簡単なのは、この式を全部コピペしたりフィルしたりして予めシートに書いておき、集計用のシートを作成しておく事だと思います。
といっても、1つの集計シートだけで全部の組合せで1600*40くらいあるので、手作業だと面倒というのもありますし、何より重くてお話しになりません(フリーズ汗

というワケで、計算式を予め書いておくのは諦めて、マクロを書いて計算をやらせてしまおうと思います。
もしフリーズさえしなければ、手作業でやっちゃう方が簡単なんですけれど…。


で、問題はまず、この関数のコードが分かりません。
後、全ての組合せをコードで書くのもあまり頭が良く無い気がするんですけど、何か良い方法はあるんでしょうか?

宜しくお願いします。

0 hits

【58721】複数条件での合計やカウントをするマクロを作りたい あい 08/11/5(水) 21:47 質問
【58725】Re:複数条件での合計やカウントをするマク... neptune 08/11/5(水) 22:13 発言
【58727】Re:複数条件での合計やカウントをするマク... あい 08/11/6(木) 0:01 質問
【58728】Re:複数条件での合計やカウントをするマク... n 08/11/6(木) 1:12 発言
【58729】Re:複数条件での合計やカウントをするマク... n 08/11/6(木) 1:51 発言
【58730】Re:複数条件での合計やカウントをするマク... あい 08/11/6(木) 2:47 質問
【58744】Re:複数条件での合計やカウントをするマク... n 08/11/6(木) 12:41 発言
【58749】Re:複数条件での合計やカウントをするマク... あい 08/11/6(木) 18:48 お礼

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