• 締切済み

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/17068)
回答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% (1827/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

  • COUNTIFS関数について

    複数の条件で絞り込んだセル数をカウントできるCOUNTIFS関数ですが、 EXcel2003には入ってないのでどうやって代用していいかわからず困っています。      A B C   1600   晴     1   1400  雨     2   1600    雨     1   1200    晴     1 こういった場合、[1600以下]の[晴]で[1]の時のセル数を元求める数式を2003でやるにはどうしたら良いでしょうか? 自分で入れてみた数式は =SUMPRODUCT(($G$7:$G$33=">=1600")*(L7:L33="1")) で、とりあえず1600の時の1の数値を出そうとたのですが、ゼロになってしまいました。

  • EXCELのCOUNTIFSについて

    ある集計表を作っており、「COUNTIFS」の導入を目指して勉強中です。 そこで疑問が生じましたので質問いたします。 例えば、A1のセルに「○」、B1のセルに「×」を打ち、そしてC1には○と×の合計数を数えるために「=COUNTIFS(A1:B1,"○","×")」と入力しましたが、「この関数に対して、少なすぎる引数が入力されています。」と出ます。 このエラーを回避しC1に○と×の合計数である「2」が入るようにすればどうすればよいでしょうか。別にCOUNTIFSには拘りません。もっと良い方法があるのでマクロはわからないので関数を教えてください。 また、私のつたない質問の意味が分からない方の回答はお控えくださいますよう、お願いいたします。

  • COUNTIFS関数で日付データを数えたい

    COUNTIFS関数で日付データを数えたいのですがうまくいかず悩んでいます。 以下のようなデータがあります。 A列       B列 9月1日(日)  件数 9月2日(月)  件数 9月3日(火)  件数 9月4日(水)  件数 データはデータシートに A列 2014/9/1 21:32 2014/9/1 21:31 2014/9/2 20:31 2014/9/2 21:26 2014/9/3 19:25 2014/9/3 21:30 2014/9/4 18:10 このような形にあります 上以外にも条件があるのでCOUNTIFS関数で件数をかぞえようと思い 9月1日の件数を数えるB1に (1) =COUNTIFS(データ!A1:A7,">=A1",データ!A1:A7,"<A2") といれてみましたがうまくいきません。 (2) =COUNTIFS(データ!A1:A7,">=2014/09/01",データ!A1:A,"<2014/09/2") とすると件数がでてきました。 日付データを直接入力せず (1)のようにセルで入力するにはどのようにすればいいのでしょうか また、他に方法があれば教えていただけないでしょうか よろしくお願いいたします。

  • COUNTIFS関数について

    お世話になります。 3つ以上の条件を含む式の間違いが分かりません。 =COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!G$1:Q$200,B3) のようなブック内の別シートを3つの条件に合うデータ件数を集計したいのですが、#value!が出ます。 ( )内の3つの条件をばらして、 =COUNTIFS(sheet1!A$1:A$200,E$1) (1) =COUNTIFS(sheet1!C$1:C$200,"2") (2) =COUNTIFS(sheet1!G$1:Q$200,B3) (3) および =COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2") は、正しく計算できるのですが、なぜか(1)~(3)を一つの式にすると、エラーになります。 何が悪いのでしょうか。

  • Excel2007でCOUNTIFS前ゼロ否定条件

    Excel2007 のCOUNTIFS関数での否定条件の 指定方法について教えてください。 VBAのマクロの中で  (略)  For i = 1 to 10    Cells(i, "B").Formula = "=COUNTIFS(" & "A1:A10, $C$" & i & ")"  Next i   のような形で COUNTIFSを利用しています。    COUNTIFSの条件に <>を使って否定条件を指定したいのですが、以下の  ように期待した動作になりません。     例   A      B       C        D            1 '080  一般品    <>'080      =COUNTIFS(A1:A5,C1)  2 '020  一般品    <>一般品  =COUNTIFS(B1:B5,C2) 3 '040  一般品 4 '060   特別品  5 '080    一般品  セルC1の記述を変えた結果は以下の通りです。       C1      D1      備考 1)  <>'080   5    3 が入ってほしい。 2)  <>080   5    ' の有無で結果は変わらず。     '(シングルクォーテーション)は接頭辞で上記結果には無関係と理解。 3)  "<>'080"   0    "<>'080" 全体を条件値として認識してしまう。 4)  '080      2   当然 5)  <='060    3   当然   ちなみに C2に <>一般品 と条件を設定すると D2には1と期待通りの値が入ります。  1)2) の結果から A列に記述されている'080と セルC1の式に書か  れた '080 が、なぜか別の値と評価され 結果 D1が 5 となっていると理解しています。 A列のシングルクォーテーションは削除、A列の書式を文字列とし 文字列"080"とIF関数で比較すると以下の結果でした。   A    B     B列の式            1 080   FALSE  IF(A1<>"080",TRUE,FALSE)   2 020   TRUE IF(A2<>"080",TRUE,FALSE) 3 040   TRUE IF(A3<>"080",TRUE,FALSE) 4 060    TRUE  IF(A4<>"080",TRUE,FALSE) 5 080    FALSE IF(A5<>"080",TRUE,FALSE)   Excelの「数式」メニュー -「ワークシート分析」-「数式の検証」で C1セルに <>'080 、<>080、"<>'080" 、<='060 を指定した時、それぞれ 1) COUNTIFS(A1:A5,"<>'080")   2) COUNTIFS(A1:A5,"<>080")   3) COUNTIFS(A1:A5,"""<>'080""") 5) COUNTIFS(A1:A5,"<='060")  と評価されています。   また VBAのテクニックを解説するWebなどでは、"<>"と値'080を& でつなげる方法も紹介されていましたが、上記の場合結局 COUNTIFS(A1:A5,"<>080") → 5 と評価されて  しまいます。      文字列同士で比較すれば、期待する結果になりそうですが 条件の書き方には工夫がいりそうです。どのように記述すればよいでしょうか   お知恵をお借りしたくいと思います。どうかよろしくお願い致します。 以上

  • COUNTIFS関数について

    あるBOOK(A)に別のBOOK(B)のデーターを読み込むようCOUINTIFS関数を使用いたしました。BOOK(A)とBOOK(B)を同時に開いておいた場合には、この関数は正確に作動いたしましたが、BOOK(B)だけを開いて「リンクを更新する」にチェックを入れて開いたところ、COUNTIFSの関数を使用したセルが#VALUE!と表示されてしまいました。 【質問です】 (1) 関数の使用に間違っていることがあるのでしょうか? (2) BOOK(1)からデーターの値を読み込むのと異なり、COUNTIFSは両方のBOOKを開いておかないと正確に作動しないのですか? 初心者の質問で恐縮ですがご指導ください。

  • エクセル「COUNTIFS」でエラーになります。

    セルF10~P10で”○”が連続して3つ並んでいるかどうか調べるのに先日教えて頂いた「COUNTIFS」関数を使ってみたのですがERRORになってしまいます。 添付のファイルの斜線罫線部のセルは除きたいのですがどうすればよいでしょうか? また教えて頂けると幸いです。  =IF(COUNTIFS((G10:I10,M10),"○",(H10:I10,M10:N10),"○",(I10,M10:O10),"○")>3,"A","B")

  • COUNTIFSについて

    Excel2007です。 =COUNTIFS(A1:A10,"4月生まれ",B1:B10,"A型",C1:C10,"男") 上記のような数式で、『B1:B10,"A型"』の部分をA型とB型という風に条件付けしたい場合はどのようにすればいいですか? (つまり4月生まれで男でA型とB型の条件を揃えたセルの数を数えたい) 『B1:B10,"A型"』部分に『B1:B10,OR("A型","B型")』と入れてもできませんでした。 宜しくお願いします。

  • ExcelのCOUNTIFSについてです。

    こんにちは。 ExcelのCOUNTIFSについて困っております。 A1、A2のセルに数値を入力し、COUNTIFSで =COUNTIFS(検索範囲,A1=<,検索範囲,<A2) としたのですが、検索されません。 このような使い方は間違っているのでしょうか? Excelにお詳しい方のご回答をお願い致します。

  • COUNTIFSの条件に日付を指定する方法

    Excel 2007 の COUNTIFS 関数 の条件として 2つの月日で範囲 として データを絞り込むマクロを記述しています 外部からExcel2007形式(.xlsm) 形式のsheet1を読みこみ sheet2 に記述した条件値とCOUNTIFSの条件値と比較しよう としています。 尚、比較対象は sheet1 のA列「出荷時期」のデータで 書式設定は 標準となっていて 文字列データです。 【sheet1】     [A]     [B]      [C] ヘッダ 出荷時期  商品分類   サイズ  [1]  '2014/04  一般     L [2] '2014/05   一般     M [3] '2014/06   特別     M 【Sheet2】 ・B列に =COUNTIFS( Sheet1!$A$1:$A$3,$A2)のように  条件値の$A2の"2"の所を行によって変えて入力してます。     [A]    [B]              [1] 出荷時期   件数   数式の検証=Excelの評価結果              [2] ">=2014/04"   0   """>=2014/04""" [3] >="2014/04"   3   ">=""2014/04"""   [4] >="2014/05"    3 ">=""2014/05"""   ==>>  ""をとる、演算子と 文字列の間に半角スペースを入れる と [5] >=2014/04    0 ">=2014/04"     [6] >= 2014/04   3 ">= 2014/04"     [7] >= 2014/05    3 ">= 2014/05" ==>> アスタリスクをつける 等。 [8] >=2014/04*    2 ">=2014/04*" [9] >=2014/05*    1 ">=2014/05*"    [10] >=2014/06*    0 ">=2014/06*" ==>>  演算子と文字列の間に'(シングルクォーテーション)をつける [11] >='2014/04    2 ">='2014/04" [12] >='2014/05    1 ">='2014/05" [13] >='2014/06    3 ">='2014/06" ==>>  文字列操作関数を入れる [14] >= & DATE(2014,4,1) 3 ">= & DATE(2014,4.1)" (注) 文字列関数を使う方法は http://www.relief.jp/itnote/archives/excel-countif-date-less-greater-than.php の例を参照しました。この方法は sheet1 の出荷時期データが日付データである必要 があるようです。 上記のようにいろいろと条件値のシンタックスを変えて試してみましたが期待する結果 になりません。 sheet1から入力する 出荷時期の元のデータが文字列の部分に修正を加え、日付 データに修正すると sheet2 の件数の値が変わるので元データを修正する方法 もあるかもしれません。 ただし 基本的にには 元データには 手を加えない 方法で対処したいと思います。 条件値の指定を どう記述すれば、利用者が自然に期待した通りの結果が得られるのか ご存知の方があれば教えてください 以上 

専門家に質問してみよう