- ベストアンサー
EXCEL DSUM クライテリア 条件式
EXCEL で DSUM の クライテリア を条件式で 表すにはどうしたら 出来るでしょうか? 普通 条件 3つ の 場合 A1:C4 を "" = < > * + 等を使つた 条件式で やりたいです
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 データベース関数でしたら、複数のセルの領域を使って、 ・横に並べると and 検索 (論理積) ・縦に並べると or検索 (論理和) というように、基本どおりにしたらよいのではありませんか? データベース関数というのは、いまひとつ、洗練されていない関数だとは思います。クライテリアの引数の型が、Range(セル)型というのは、どうにも間が抜けているなって思います。時代的な関数のひとつです。 >"" = < > * + 等を使つた 条件式で やりたいです その質問に至るだけの、理屈や説明がないのでどう答えてよいか分かりません。クライテリアの場所の領域が邪魔なのか、それとも、単なる仕様に対する希望なのか、質問に具体性がありません。 ただ、最近は、みなさん、SUMPRODUCT を使っているようですから、そういう使い方もあると思います。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。Wendy02です。 >LOTUSを使つていましたので、LOTUSで出来る事は EXCELでも 出来ると思つてしまいます。 私も、そう思ってしまいます。 ただ、フィルタオプションなんかで、マクロを使うと、R1C1 方式しか使えないので、Microsoft ネイティブかなって思ったこともあるのですが、そうではないようですね。 >変数とか間接アドレスが使えないので 特定のセルを 変数として使うのが いいですか? 特定のセルを 変数 というのは、「挿入-名前-登録」という方法ですか? それは可能なのですが、昨日、なぜ、クライテリアがセルではいけないのか検証してみたのですが、クライテリアを、どうも、それぞれの行に当てはめて、計算しているということが分かりました。クライテリアに間接的に参照されるアドレスは、相対参照式で、それぞれの行に当てはめるという計算なのです。そういう計算式ですと、どうやら、セル自体を使わざるを得ないなっていう気がしました。 #1さんの http://www.takenet.or.jp/~hayakawa/excel0/u-tanexcel54.htm の「喫煙,飲酒等」の嗜好品アンケートを例に取ると 肥満 喫煙 飲酒 1 1 1 の =DSUM(L2:R8,6,L11:N12) は、 =SUMPRODUCT((Q3:Q8=1)*(M3:M8=1)*(N3:N8=1)) に置き換えることができますし、また、 それは、誰かということを検索したければ、以下のような数式で、 =INDEX(L1:L8,SUMPRODUCT((Q3:Q8=1)*(M3:M8=1)*(N3:N8=1)*ROW(L3:L8)),1) "D" と出すことができます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 #2 です。余計な薀蓄かもしれませんが、お答えさせていただきます。 >>時代的な関数のひとつです。 >済みません どういう意味ですか? もともとは、検索する関数は、LOOKUP やINDEX 関数しかなかったのですが、それでは遅くてとても使いづらいということで、1980年代後半に、データベース関数が生まれたわけです。それと一緒にあるのが、フィルタオプションです。それが登場してきたときには、画期的だったにしても、現在になると、メモリも潤沢で、計算スピードも速くなったわけで、必ずしも、データベース関数を使う必要性はなくなった、と思うのです。 >DSUMの中に入れる方法もあるようなきがしてきました。 私は、無理だと思います。引数の型が違うからです。(もしかしたら、できるという人がいるかもしれません。ただ、私は試してみましたが、うまく行きませんでした。) 私自身も、なぜ、クライテリアを、引数の中に封じこめることができないのか、不便さを感じています。数式を参照する方法は、私も使いますが、それは、外部セル以外はできません。なぜ、外部のセルを必要とするのか、たとえば、配列数式で、クライテリアを入れられないのか、と思います。フィルタオプションも同様です。それで、SUMPRODUCT をお勧めしたわけです。 私は、ユーザー定義関数を作ることはできても、このデータベース関数は、少し特殊な方法を使っているようで、スピードが桁外れに速いのです。だから、とても、ユーザー定義関数では、このようなスピードを確保できないのです。
お礼
有難う御座います。LOTUSを使つていましたので、LOTUSで出来る事は EXCELでも 出来ると思つてしまいます。変数とか間接アドレスが使えないので 特定のセルを 変数として使うのが いいですか?
[ANo.1この回答へのお礼]に対するコメント、 「クライテリア をセルを使わずに表現したい」の意味が理解できないけど、条件式を使ったやり方を紹介しておきます。(ASIMOVさんが紹介された URL に記載されている例を参照しています) 肥満で喫煙 かつ 飲酒の人数 =DSUM(L2:R8,6,P11:P12) ここに、P11 は空白セルとし、セル P12 に次式を入力 =AND(Q3=1,M3=1,N3=1) 肥満で間食し かつ 運動しない人 =DSUM(L2:R8,4,P14:P15) ここに、P14 は空白セルとし、セル P15 に次式を入力 =AND(Q3=1,O3=1,P3=0) 喫煙の人 または 飲酒を嗜み塩味を好む肥満の人 =DSUM(L2:R8,2,P19:P20) ここに、P19 は空白セルとし、セル P20 に次式を入力 =OR(M3=1,AND(N3=1,R3=1)) 男性で BMI が 25超 かつ γ-GTP が 56以上の人 =DSUM(A1:M25,13,R3:R4) ここに、R3 は空白セルとし、セル R4 に次式を入力 =AND(B2="男",C2>25,K2>=56) ここに、B列に性別が、C列に BMI値が入力されていると仮定 最高血圧が 140超の人 または 最低血圧が 90超で総蛋白が 8超の人 =DSUM(A1:M25,13,R9:R10) ここに、R9 は空白セルとし、セル R10 に次式を入力 =OR(F2>140,AND(G2>90,H2>8)) 【お断り】上の内容が理解できなくて質問される場合は、具体的にどの部分かを明記してください。単に「分かンな~い」とか「うまく行かない」だけでは駄目です。
お礼
mike_g 様 色々テクニックを ご存知ですね。 <=DSUM(L2:R8,6,P11:P12) 6 の数字 間接アドレスのきざしが?あるいは もう使つておられるのでは? <P11 は空白セルとし、セル P12 に次式を入力 =AND(Q3=1,M3=1,N3=1) DSUMの中に入れる方法もあるようなきがしてきました。 有難うございます。
- ASIMOV
- ベストアンサー率41% (982/2351)
もう少し具体的にお願いします http://www.takenet.or.jp/~hayakawa/excel0/u-tanexcel54.htm これの事だとは思うんですが
お礼
正にこれです。 クライテリア をセルを使わずに表現したいのです。 例 =dsum(A1:E10,D2,クライテリア セルの範囲を使わずに表現したい) の方法を探しています。
お礼
条件設定の種類が沢山あるので、クライテリアの場所の領域が邪魔なのです。SUMPRODUCTを勉強してみます。
補足
>時代的な関数のひとつです。 済みません どういう意味ですか? SUMPRODUCT 論理演算式ですつきりして 気持ちがいいですね。 できました。SUMPRODUCTを使えば 色々な事が出来そうですね。有難うございました。