ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

エクセルマスターコミュのDCOUNTAについて教えてください。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
いつもお世話になっておます。
どなたかお知恵を貸していただけないでしょうか。

関数「DCOUNTA」について質問をさせてください。
 
添付のワークシートのように、セルA2からE9までデータベースを作りました。
条件(Criteria)はG2からJ9となります。
H13に、男性で20代の人数を求めてオートフィルで男性で30代、40代、50代、60代の人数が出るようにしたいと考えています。
I13〜17は女性の年代別の人数を求めたいです。
また、J13に20代かつA型の人数を求めてオートフィルで30代から60代のA型の人数を求めたいです。(A型の人数は男女は問いません)
H13に「=DCOUNTA(A2:E9,C2,G2:I9)」と入れましたが、「7」
と返されました。しかし欲しい答えは「3」です。
正解表のようになるにはどうしたらいいのでしょうか。

以下のサイトを参照して何度も試してみたのですが、答えが全く合いません・・・。また絶対参照の設定もしたのですが、それでもだめでした。
http://kokodane.com/kan13.htm
Excelのヘルプも確認したのですが、どうも理解ができませんでした。
20代ということは、「20以上29以下」ということになるのか?!と思い
CriteriaをI列のようにしてみましたが、見当違いでしょうか。

お忙しいところ恐縮ですが、ご教示いただけますと幸いです。
 よろしくお願いいたします。

コメント(13)

まず。

>J13に20代かつA型の人数を求めてオートフィルで30代から60代のA型の人数を求めたいです。
>(A型の人数は男女は問いません)
>H13に「=DCOUNTA(A2:E9,C2,G2:I9)」と入れましたが、「7」
>と返されました。しかし欲しい答えは「3」です。

20代のA型は4人じゃないですか?
質問する際はきちんと見返して投稿して下さい。


さて本題。

条件欄のセルI2にも「年齢」と入れて頂いて、

20代男性のA型を求める場合は
=DCOUNTA(A2:E9,C2,G2:I3)
で出てきます。

ただ、DCOUNTA関数の条件は見出しと条件が隣接している必要がありますので、
30代男性の条件は現状の表では求める事が出来ません。
(条件見出しと30代の条件の間に20代の条件が入っているため)
各年齢ごとに条件見出しと条件をそれぞれ作成する必要があります。
※写真1


結論として。

表を作りなおす必要がありますので、どうせならピボットテーブル使ったほうがいいんじゃないでしょうか?
※写真2
正解表が全然違いますね
30代、50代の男性がいることになっていますし
男女の合計を足すと8人・・・データより1人増えてますよね?
A型の人数も全然違う分布だし

以前のトピでも同じように記載ミスをしていますよね?
期待する答えが間違っていたり画像と質問文の式が違っていたり・・・
http://mixi.jp/view_bbs.pl?comm_id=1187192&id=76056006
http://mixi.jp/view_bbs.pl?comm_id=1187192&id=76085139

改善する気も見直すして投稿する気もないようですね・・・


まあとりあえず、本題に入るとして

表をあまり変えずにやるとすれば
SUMPRODUCT関数を使うなどすれば出来るはずです
例えば、画像のような感じでしょうか
これは以前のトピでのSUMPRODUCT関数の使い方と
変わらないので条件を考えれば出来ると思いますよ
お疲れ様です。
記載ミスがあり、大変失礼いたしました。
何度も申し訳ありません。

MILANO様
色々と考えていただき、ありがとうございます。
ピボットのアイデア、よいとは思うのですが、複数の人が使うシートなので
作業工程が増えてしまい業務上難しそうです。。
せっかく考えて頂いたのに申し訳ないです。

マリ男様
SUMPRODUCTですか。この関数、使用したことがないので試してみます。
以前のトピを検索してみたのですが、見つけることができませんでした。
いつ頃のトピか教えていただけますか?

お手数をお掛けしますがよろしくお願いいたします。
>>[4]
>SUMPRODUCTですか。この関数、使用したことがない
以下のトピで使っているはずです
http://mixi.jp/view_bbs.pl?id=61161599&comm_id=1187192
>>[4]

この質問者、今までに何度も質問してるのに毎回誤った書き込みしたり、以前回答頂いた内容を覚えてなかったり。。。スキル以前の問題があるのかもしれませんね。
COUNTIFS関数に関しては
http://mixi.jp/view_bbs.pl?comm_id=1187192&id=76056006
で似たようなケースを解決しているようですがご記憶にありますか?
お疲れ様です。
ご連絡が遅くなり申し訳ありません。

MILANO様
以前にも似た質問をしておりました。大変失礼しました。

こちらでは何度もお世話になっているので、投稿前に以前の自分の
質問を確認すべきでした。


マリ男様

以前のトピを教えてくださりありがとうございました。
記憶にあります!
こちらを参照しながら、問題を解いてみます。


現在、仕事が詰まっており結果報告にお時間をいただきますが、
必ず報告いたします。

ご迷惑をおかけいたしますが、その際はお付き合いいただけたらと思います。

今後ともよろしくお願いいたします。


書いてませんでしたが、私の添付した画像では
必要ないですし邪魔なので条件表は使っていません

まず提示された条件表では40代までしか対応できませんし
>20代ということは、「20以上29以下」ということになるのか?!と思い
>CriteriaをI列のようにしてみましたが、見当違いでしょうか。
H,I列の条件では「20以上29以下」にはなっていません
マリ男様

こんばんは。

報告が遅くなりすみません。
COUNTIFSを使用してやっと問題が解けました!

以下になります。


----------
H13
=COUNTIFS($C$3:$C$9,"男",$D$3:$D$9,">=20",$D$3:$D$9,"<30")

※H13の式を下にオートフィルして年代の数字を適宜手修正しました。
また、H13〜17をI13〜17へオートフィルして男を女に手修正しました。
-----------

-----------
J13
=COUNTIFS($D$3:$D$9,">=20",$D$3:$D$9,"<30",$E$3:$E$9,"○")
※J13の式を下にオートフィルして年代の数字を手修正しました。
-----------
過去のトピも参考になったのですが、○○以上、○○以下の表現が
どうも理解できず、苦戦しました。

20代(20歳以上、30歳未満)は、">=20","<30"
と表現するのが正しいのですね。
トピをたてた時の書き方">=20","<29"だと、「20歳以上、29歳未満」
となり、29歳の人がカウントされなくなってしまいますね。

以下のサイトも参考になりましたので覚書として貼らせてください。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1373332233

今回も大変お世話になりました。
大事なことを教えてくださり、本当にありがとうございました。
長々と失礼いたしました。

今後ともよろしくお願いいたします。
解決できたようで良かったです
条件に関しては">=20","<30"でも">=20","<=29"でも良いはずです
結局、20≦x<30なのか20≦x≦29なのかですから整数値の場合
どちらも同じことになりますよね

因みに参考までに私の方法を載せますと
COUNTIFS関数でやるなら例えば
H13セル =COUNTIFS($D:$D,">="&VALUE(LEFT($G13,2)),$D:$D,"<="&VALUE(LEFT($G13,2))+9,$C:$C,LEFT(H$12,1))
H13セルをI13セルにコピー又はオートフィル
J13セル =COUNTIFS(D:D,">="&VALUE(LEFT(G13,2)),D:D,"<="&VALUE(LEFT(G13,2))+9,E:E,"○")
H13:J13をH17:J17までコピー又はオートフィル

オートフィルでもっと楽をするならIF関数をネストして
検索条件範囲と検索条件をそれぞれ分岐させれば良いですね
H13セル =COUNTIFS($D:$D,">="&VALUE(LEFT($G13,2)),$D:$D,"<="&VALUE(LEFT($G13,2))+9,IF(H$12<>"A型",$C:$C,$E:$E),IF(H$12<>"A型",LEFT(H$12,1),"○"))
H13セルをJ13セルまでコピー又はオートフィル
H13:J13をH17:J17までコピー又はオートフィル


SUMPRODUCT関数でやるなら私なら例えば
H13セル =SUMPRODUCT(($D:$D>=VALUE(LEFT($G13,2)))*($D:$D<=VALUE(LEFT($G13,2))+9)*($C:$C=LEFT(H$12,1)))
H13セルをI13セルにコピー又はオートフィル
J13セル =SUMPRODUCT((D:D>=VALUE(LEFT(G13,2)))*(D:D<=VALUE(LEFT(G13,2))+9)*(E:E="○"))
H13:J13をH17:J17までコピー又はオートフィル

こちらももっと楽をするなら配列数式を使う手もありますね
H13セル =SUM(($D:$D>=VALUE(LEFT($G13,2)))*($D:$D<=VALUE(LEFT($G13,2))+9)*IF(H$12<>"A型",($C:$C=LEFT(H$12,1)),($E:$E="○")))
(配列数式とするため式の確定はCtrl+Shift+Enterで確定する)
H13セルをJ13セルまでコピー又はオートフィル
H13:J13をH17:J17までコピー又はオートフィル

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

エクセルマスター 更新情報

エクセルマスターのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。