• 締切済み

countifsで可能でしょうか?

非常にも困っているのでご存知の方教えてください。 現在Excel2007のワークシート関数Countifsを使って値を求める作業をしています。(複数条件に合致したセルの数を求める) 以下例です。 ----A-----B-----C-----D-----E-----F-----G 1---1/1---1/1---1/2---1/3---1/4---1/5---1/6 2---○----○----×----○----×----×----× 3---×----○----×----×----×----×----× 4---○----○----×----○----×----×----× 5---○----×----×----○----×----×----× セルA1からG1は日付です。 求めたい事 1、日付が1/1でかつ×のセルの数。 2、日付が1/5以下でか×のセルの数 これがなかなかうまくいきません。 申し訳ありませんが対応方法がお分かりの方、 ご伝授頂けませんでしょうか? よろしくお願いします。

みんなの回答

  • fmajin
  • ベストアンサー率61% (75/122)
回答No.5

これはCOUNTIFS関数では求められないと思います。別シートだからうんぬんではないでしょう。 本来は、集計元の表の作り方から考える必要があるのだと思います。1行目に同じ日付が入ることもあるということですが、表の作り方自体にも法則性がないと、法則性を指定して集計することができないのですから、集計する際に困ってしまうということですね。 「日付」と「×」という2条件なのだと思いますが、日付が1行の範囲なのに対して、「×」が複数列×複数行の範囲になっているので、COUNTIFS関数では計算できないでしょう。各条件範囲が、同じ大きさのセル範囲になっていないと対応できないはずです。 本来、単純に解決したいなら、無理に1つのセルで計算しようとしなければよいのでは? 単純に元の表に6行目を用意して、その行で各列の「×」印の合計行をCOUNTIFで求めておく。で、SUMIF関数で、1行目の日付を条件にして、「"=2008/1/1"」の場合と「"<=2008/1/5"」の場合をそれぞれ計算すれば求められると思います。なお、日付の条件は、「1/1」のように西暦を省略しないほうがいいですよ。省略した場合は、現在の西暦と自動的にみなされますが、あまり適切ではないでしょう。 どうしても1セルで求めたいのなら、No.4の方が示してくださっているSUMPRODUCT関数で求められると思いますが、そちらは試してみましたか? ただ、この数式の意味を理解できますでしょうか? この仕組みは、Excel関数を紹介した比較的上級者向けの書籍などを購入されて、じっくり理解する必要もあると思います。

すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>1、日付が1/1でかつ×のセルの数。 ⇒=COUNTIFS(A1:G1,"1/1",A2:G5,"×")  又は、=SUMPRODUCT((A1:G1<="1/1"*1)*(A2:G5="×")) >2、日付が1/5以下でか×のセルの数 ⇒=COUNTIFS(A1:G1,"<=1/5",A2:G5,"×")  又は、=SUMPRODUCT((A1:G1<="1/5"*1)*(A2:G5="×")) 因みに当方、未だにエクセル2000の為、COUNTIFSは検証できていません。

tatsu911
質問者

お礼

ご回答有り難う御座います。これは簡単な事じゃないんですね。 色々試していますがExcel初心者には無理っぽいです。 もしCOUNTIFS(A1:G1,"1/1",A2:G5,"×")でいけるのであれば私の方は 式の埋め込みはシートA、表はシートBと異なるシートへの参照になっています。これが問題なんですかね?余り問題とは思いませんが。。 COUNTIFS(A1:G1,"1/1",A2:G5,"×")をシートを変えて行うと#VALUE!になってしまいます。ちなみにCOUNTIFS(A1:G1,"1/1")、COUNTIFS(A2:G5,"×")と別々にすると問題なく動きます。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

まず前半 多分2007のCOUNTIFSだけでは出来ないでしょう。 この問題は質問者は>複数条件に合致したセルの数を求める と捉えているが、この類型で捉えられるのは、別に簡単な課題があり、それとは違う。(例えばB列での地区が関東、D列での年齢が30以上とか、列ー列の条件のことを言う場合がおおい。 この質問はそれは1方は(日付け)横(行)方向に見つけ 円はセルのカウント条件(どちらかといえば列の条件)だからである。 この課題は関数でも上級レベルの問題で、質問者のレベルは判らないが、1、2時間考えて出てくるものではなく、誰かの回答を理解して見覚えることで始まると思う。 後半はさらに難しい(複雑になる)ので考えてみる。 前半の 例データ 1 1月1日 1月2日 1月3日 1月4日 1月5日 1月6日 1月7日 2 ○ ○ × ○ × × × 3 × ○ × × × × ○ 4 ○ ○ × ○ × ○ × 5 ○ × × ○ × × ○   関数は =COUNTIF(OFFSET($B$2,0,MATCH(DATE(2008,1,ROW()-11),$B$1:$H$1,0)-1,100,1),"○") C12に入れたので、ROW()-11にしている。 これを下方向に式を複写し 3 3 0 3 0 1 2 1日ー7日までの各日の円の数。 >1/1---1/1--- とダブっているのは間違いと思って修正。

tatsu911
質問者

お礼

回答有り難う御座います。引き続き悩み中です。 >1/1---1/1--- このダブりは間違いではなく、この様な状況に表自体がなってしまう事もあるのですよ。。。 簡単にはいかないのですかね?

すると、全ての回答が全文表示されます。
回答No.2

tatsuさんはどういう関数を作成してエラーが出たのでしょうか? それも明記していただきたいと思います。 また、条件をまとめると、1/1~1/5までという条件でよろしいでしょうか? まだ実行はしていませんが以下の数式ではどうでしょうか? =COUNTIFS(A1:G1,"<=1/5",A2:G5,"×")

tatsu911
質問者

お礼

回答有り難う御座います。 回答頂きました内容に近い状態で作成しているのですが、#VALUE!でERRORになってしまいます。 あえてご回答頂きました内容との相違点は、式のシートと表のシートが別シートと言う所以外相違はありません。別シートへの参照などは当たり前に出来ますのでCOUNTIFSでは無理なのでしょうかね。

すると、全ての回答が全文表示されます。
  • bari_saku
  • ベストアンサー率17% (1828/10269)
回答No.1

Excel2007は持ってないので検証できませんが、無理なように思います。 おそらくは、2~5行目の○×をカウントしたいのだと拝察しますが、○×の入っている行を指定しないとダメなんじゃないでしょうか。 1、日付が1/1でかつ「2行目」が×の数 2、日付が1/5以下で「4行目」が×の数 等でしたら、可能かと思います。 http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-kansu.html#countifs

tatsu911
質問者

お礼

回答有り難う御座います。 そうですよね。ご回答頂きました状況なら可能なんですよね。 しかし表はどの様な作られ方にならないのですよ。。。。 もう4日も悩み続けてます(泣)

すると、全ての回答が全文表示されます。

関連するQ&A