みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのCOUNTIF関数で条件が2つある時

すみません、どなたか教えてください。

シート2のセルD5には数式「=COUNTIF(INDIRECT($C$43),B5)」があり「2」と表示されています。
$C$43は数式「="1!$C$5:$C$"&E42」でE42セルには32の数字が入っています。つまりシート1のセルC5からC32までとシート2のB5が等しかったらシート2のセルD5に「件数を表示」です。
1件の条件の時のカウントはできました。

問題はこの次に、シート1のセルD5からセルD32とシート2のセルE5と等しいときにの条件を加えて「件数の表示」をしたいのですが、二つの条件があるときの書き方が分かりません。

つまり、
シート1のセルC5からセルC32までに入っている文字(1イ、2ロ、5,1ロ・・・)とシート2のB5の文字(1イ)が同じで、かつ、シート1のセルD5からD32までに入っている数字(23、19,21,40・・・)とシート2のセルE5の数字「23」と同じ時の件数を数えたい。と言うことですが、うまく説明できなくてすみません。

シート2のセルD5に数式「「=COUNTIF(INDIRECT($C$43),B5,IF(INDIRECT($D$43),E5,0))」 だとエラーになってしまいます。$D$43は「=1!$D$5:$D$"&E42」、E5はシート2のセルE5です。


おしえてください。

投稿日時 - 2011-01-25 09:45:20

QNo.6473356

すぐに回答ほしいです

質問者が選んだベストアンサー

=SUMPRODUCT((INDIRECT($C$43)=B5)*(INDIRECT($D$43)=E5))

又は

=SUMPRODUCT((INDIRECT("1!C5:C"&E42)=B5)*(INDIRECT("1!D5:D"&E42)=E5))

になります。
 尚、INDIRECT関数の中の" "で囲まれた部分は「$」を付けなくとも絶対参照になってしまいますから、「$」を付ける意味がありません。
 ですから、C43の数式は

="1!C5:C"&E42

D43の数式は

="1!D5:D"&E42

とした方が良いと思います。

投稿日時 - 2011-01-25 10:56:01

お礼

ありがとうございました。成功しました。
つたない質問ですみません。他の仕事もしながら合間にエクセルを勉強して、統計の表作成ですので、順番に関数を勉強していけばいいのですが、一夜漬けの付け焼刃ですので、ご容赦ください。ありがとうございました。
あと1割ぐらいで表が完成します。
利益もないのに本当にありがとうございます。

投稿日時 - 2011-01-25 17:05:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

>$C$43は数式「="1!$C$5:$C$"&E42」でE42セルには32の数字が入っています。つまりシート1のセルC5からC32までとシート2のB5が等しかったらシート2のセルD5に「件数を表示」です。

わざわざC43セルに参照先のセル範囲を取得する数式にしていますが、このシート名部分は関数で自動取得したのでしょうか。

もし手入力しているなら、以下のように直接INDIRECT関数に組み込んだ方がよいと思うのですが・・・
(文字列部分は相対参照でもOKですが、E42セルが固定ならこの部分を絶対参照にする)。

=COUNTIF(INDIRECT("1!C5:C"&$E$42),B5)

>問題はこの次に、シート1のセルD5からセルD32とシート2のセルE5と等しいときにの条件を加えて「件数の表示」をしたいのですが、二つの条件があるときの書き方が分かりません。

ご使用のバージョンが記載されていませんが、Excel2007以降のバージョンならCOUNTIFS関数が利用できます。

=COUNTIF(INDIRECT("1!C5:C"&$E$42),B5,INDIRECT("1!D5:D"&$E$42),E5)

2003以前のバージョンならSUMPRODUCT関数を使うことになります。

=SUMPRODUCT(INDIRECT("1!C5:C"&$E$42)=B5)*(INDIRECT("1!D5:D"&$E$42)=E5))

#Officeソフトはバージョンによって利用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。

投稿日時 - 2011-01-25 12:17:36

お礼

ありがとうございました。何とかできました。
まだバグがでるか分かりませんが、取り合えず、簡単なデータ入力で確認したところ、正常でした。
本当にありがとうございました。
必要な部分だけの妻儀食いですので、・・・質問の説明がうまく出来ず皆様にご迷惑をおかけしてしまいました。
ありがとうございました。

投稿日時 - 2011-01-27 13:33:35

ANo.4

答えは出ているが、質問文を読んで、質問の内容がわかりにくい。
実例でも挙げて、ここをこう見て、ここの件数を出した意をはっきりさせること。
INDIRECT関連は、説明が「間接的」になるので、説明がやりにくいのはわかるが。
本件など(INDIRECTは使用経験があってわかっているのだから)INDIRECTを隠して(引用結果を用いて)説明してもよいのではないか。
INDIRECTの質問でなく、2条件の件数カウントなんだから。
ーー
それにCOUNTIFSが使えるかどうかの問題がエクセルバージョン2007以後かどうかで必要なのに、質問に書いてない(バージョンを書くのは常識にしてほしい)。
2007以後なら
Googleででも{COUNTIFS」で照会し
http://www.becoolusers.com/excel/countifs.html
などを勉強し、考えたらCOUNTIFの延長線で、そちらもでできるのでは。
INDIRECT関数は経験しているようだから。
ーーー
それ以前のバージョンでは、「2条件(計数集計と件数カウント)はSUMPRODUCT」と公式的なものがあるので、良く覚えておくこと。

投稿日時 - 2011-01-25 11:37:20

お礼

ありがとうございました。何とかできました。
まだバグがでるか分かりませんが、取り合えず、簡単なデータ入力で確認したところ、正常でした。
本当にありがとうございました。
必要な部分だけの妻儀食いですので、・・・質問の説明がうまく出来ず皆様にご迷惑をおかけしてしまいました。
ありがとうございました。

投稿日時 - 2011-01-27 13:33:30

ANo.2

条件は、
シート1のC5:C32に、シート2のB5の値が存在する
なおかつ
シート1のD5:D32に、シート2のE5の値が存在する
でいいですか?

その場合、何の件数を求めたいのですか?
シート1のC5:C32に、シート2のB5の値が何件存在するか?
それとも、
シート1のD5:D32に、シート2のE5の値が何件存在するか?
それとも、
両方の合計?

求めたい値を明確にしてください。

あと、条件に合わなかった場合は、どうするのですか?
0を表示する? 何も表示しない? 何かメッセージを表示する?

投稿日時 - 2011-01-25 10:47:21

お礼

ありがとうございました。何とかできました。
まだバグがでるか分かりませんが、取り合えず、簡単なデータ入力で確認したところ、正常でした。
本当にありがとうございました。
必要な部分だけの妻儀食いですので、・・・質問の説明がうまく出来ず皆様にご迷惑をおかけしてしまいました。
ありがとうございました。

投稿日時 - 2011-01-27 13:33:52

ANo.1

シート2のD5には次のような式を入力すればよいでしょう。

=COUNTIF(INDIRECT($C$43),B5)+COUNTIF(INDIRECT(SUBSTITUTE($C$43,"C","D")),E5)

投稿日時 - 2011-01-25 10:36:16

お礼

ありがとうございました。何とかできました。
まだバグがでるか分かりませんが、取り合えず、簡単なデータ入力で確認したところ、正常でした。
本当にありがとうございました。
必要な部分だけの妻儀食いですので、・・・質問の説明がうまく出来ず皆様にご迷惑をおかけしてしまいました。
ありがとうございました。

投稿日時 - 2011-01-27 13:34:09

あなたにオススメの質問