前回の続きです。
Excel にはデータベース関数として
Daverage(), Dcount(), Dmax(), Dmin(), Dsum()
などがあります(全部で12)。上に挙げた関数はデータベースでもよく利用されているものですね。
前回も説明したのですが、このパラメータは
Dcount(Database, フィールド, Criteria)
となっています。第1パラメータの"Database"は、対象となるデータの範囲を指定し、フィールドは計算したい列で、条件を"Criteria"に指定することになります。
"Database"の1行目には必ず項目名を指定することになります。この項目名がないと、条件を指定することができません。
例えば、
Dcount(a1:o5,3, Criteria(b1:c2))
であれば、Q0で1と答えた人の中でQ1を1と回答した数を求めることになります。
この条件は"Q0で1と答え、かつQ1で1と答えた"となります。つまり"Q0=1 and Q1=1"ということ。ですから、criteria の指定は右図のようになるのですが、ここで注意したい点がいくつかあります。
まず、必ず項目名を指定すること。Database として指定されている範囲の1行目が項目名になるのは上で説明しましたが、Criteria ではこの項目名を正しく指定する必要があるのです。これを間違えて入力すると集計が可笑しくなってしまいます。
で、複合条件の場合、ANDは行方向でORは列方向で指定します。ですから、上の"Q1で1と答え、かつQ1で1"の指定が"b1:c2"になるのです。じゃあ"Q0で1もしくは2と回答し、かつQ1で1と答えた"という条件はどのように指定すればいいでしょう。

単純に考えれば、(Q0=1 or Q0=2) and Q1=1 となりますから、左図のように指定するばいいと思えるのですが、さにあらず。excel の場合は"()"を指定できませんので、"Q0=1 and Q1=1 or Q0=2 or Q1=1"のように指定しなくてはいけません。ですから、下図のように入力しておいて、

=Dcount(a1:013, ,Criteria!b1:C4)
にしないと正しい回答数がもとめられません。これちょっと嫌らしいようにも思えるのですが、慣れてしまえば簡単です。
Dcount はフィールドを指定しなくても問題がありません。これはSQLを思い出してもらえれば判ると思いますが、SQLの場合
Select Count(*) from table where Q1=1
のように指定しますよね。この"*"と同じことで、条件に当てはまる行数を返すのですから、列を指定する必要はないのです。ところがそれ以外の関数は列を指定しないと計算できません。ですから、
=Dsum(a1:013,3,Criteria!b1:c4)
のように列番号(左端を1とします)もしくは項目名を指定することになります。列数が少ないときには列番号でも問題ないですが、項目数が多くなると数え間違いをしやすいので、なるべく項目名を指定したほうが間違いないと思います。
最後に、"Database"ですが、毎回同じ範囲を指定しますんで、普通は名前をつけます。これは最初に指定したい範囲をドラッグしておいて、メニュー「挿入」→[名前」→「定義」から名前を指定すればOKです。できれば、英語というか、英数文字で指定したほうが、関数を入力する時に面倒でなくていいと思います。




最近のコメント