• ベストアンサー

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)を一つの式にすると、エラーになります。 何が悪いのでしょうか。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.10

> 先ほどの式をもういち度見直したところ、エラーではなく「0」が返ってきて、予想される値と異なるのです。 変だなぁと思っていろいろデータを入れて試したところ、条件に一致する値以上の結果が出ることもあり =SUMPRODUCT((Sheet1!A$1:A$200=E$1)*(Sheet1!C$1:C$200=2)*(Sheet1!G$1:Q$200=B3)) この式では正しい結果が得られないことがわかりました。最後の複数行指定で駄目みたいです。テスト不足でいらぬ時間を取らせてしまって申し訳ありませんでした。 違うアプローチを考えた方がよさそうですね。

queignole
質問者

お礼

わざわざデータを作って試していただいたのですね。 ご丁寧な回答ありがとうございます。 今まで2003のときは、第一・第二の式の分は、データのシート全体を並べ替えて、第三の式部分だけをcountif関数で処理していました。 2007からCOUNTIFS関数ができたので、並べ替えなしで一気に処理できるかと思ったのですが、無理なようですね。 本当にありがとうございました。

その他の回答 (10)

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.11

No10です。 今更ながらなのですが、よく考えたら sheet1!A$1がE$1、かつ、sheet1!C$1が2、かつ最後の条件は!sheet1!G$1:Q$1がB3になるので、sheet1!G$1:Q$1でB3が複数列で合致すると、その分複数カウントされてしまいます。条件的にはそれでいいのでしょうか。 たとえば sheet1!A$1がE$1と合致 sheet1!C$1が2と合致 sheet1!G$1とsheet1!H$1でB3と合致 の場合、結果は2でカウントされるというような感じです。

queignole
質問者

お礼

すみません、こちらを読まずに閉めきってしまいました。 具体的なデータを出していないのでわかりにくかったかと思います。 sheet1のG:Qには、同じ行には同じ数字は入りません。もしあったとしても(例のsheet1!G$1とsheet1!H$1でB3と合致)、2件とカウントして問題ありません。 ご心配ありがとうございます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.9

>ご紹介の式の意味は分かりましたが、その通りに入力してもエラーになります。 提示した数式をそのままコピー貼り付けすれば、少なくともエラーが出ることはありません。 エラーの種類が#VALUE!エラーなら、数式の行範囲(行数)がすべての範囲で一致していないパターンなどが考えられます(もちろん参照範囲にエラー値が含まれている場合もエラー表示されます)。 落ち着いて、数式やデータ範囲に問題がないか調べてみてください。 >それと…検索値は文字列ではなく数値を検索したかったのでした。 COUNTIF関数では、検索値を文字列と数値のいずれで指定しても、結果として正しい結果が返りますが(文字列と数値の区別がない)、一般的な関数(たとえばVLOOKUP関数など)では数値と文字列数字は別のものと判断されますので注意してください(数値の場合は「""」で囲まない)。

queignole
質問者

補足

たびたびありがとうございます。 が、先ほどの式をもういち度見直したところ、エラーではなく「0」が返ってきて、予想される値と異なるのです。 フィルタなど使ってデータを目視しても、明らかに条件に合うデータがあるのですが。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.8

> ご紹介の式の意味は分かりましたが、その通りに入力してもエラーになります。 どのようなエラーでしょう。バラバラに配置したらどうなるでしょう。 =SUMPRODUCT((Sheet1!A$1:A$200=E$1)*1) =SUMPRODUCT((Sheet1!C$1:C$200=2)*1) =SUMPRODUCT((Sheet1!G$1:Q$200=B3)*1)

queignole
質問者

補足

たびたびありがとうございます。 バラバラに配置すると問題ありません。正しい値が返ってきます。 が、先ほどの式をもういち度見直したところ、エラーではなく「0」が返ってきて、予想される値と異なるのです。 フィルタなど使ってデータを目視しても、明らかに条件に合うデータがあるのですが。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

>何が悪いのでしょうか。 3つの条件で検索条件範囲の大きさが揃っていませんので一致させてください。 COUNTIFS(sheet1!A$1:A$200,E$1)とCOUNTIFS(sheet1!C$1:C$200,"2")は条件範囲が1列でCOUNTIFS(sheet1!G$1:Q$200,B3)のみ11列ありますので数式の整合性が合わないのでしょう。 行数については全てが1から200の200行なので列数を揃えればエラーになりません。 各範囲で対象の行番号が異なっても行数が一致していればエラーになりません。 何故そうなるかは分かりませんがCOUNTIFS関数の仕様なのでしょう。

queignole
質問者

お礼

ご回答ありがとうございます。 三番目の式は、11列の中からセルB3と合致するものを数えたいので、COUNTIFS関数では無理そうですね。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.6

>何が悪いのでしょうか。 最後の範囲だけがG列からQ列の複数列(11列)だからです。 =COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!G$1:G$200,B3) とか =COUNTIFS(sheet1!A$1:K$200,E$1,sheet1!C$1:M$200,"2",sheet1!G$1:Q$200,B3) なら正しい答えがでるはずですよ。 どうしてもという場合は =COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!G$1:G$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!H$1:H$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!I$1:I$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!J$1:J$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!K$1:K$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!L$1:L$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!M$1:M$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!N$1:N$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!O$1:O$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!P$1:P$200,B3)+COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!Q$1:Q$200,B3) とすれば計算できますが。。。

queignole
質問者

お礼

ご回答ありがとうございます。 3番目の式に合わせて1・2番目の式の範囲も11列にすると、えられる値が変わってしまいます。 どうしても、という場合…非現実的ですよね(笑)。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

COUNTIFS関数のヘルプに、次のように書かれています。確認してください。 ---------------- 重要 各追加範囲の列数と行数は "条件範囲 1" 引数と同じである必要があります。範囲どうしは隣接していなくてもかまいません。 ---------------- A列と一緒にG:Qをまとめては計算できないので、もうちょっと計算したい事を整理して、別の考え方を工夫してみて下さい。

queignole
質問者

お礼

ご回答ありがとうございます。 「"条件範囲 1" 引数と同じ」の意味が分かりませんでしたが、他の方の回答を見てなんとなく理解しました。 3番目の式で計算したいのは、複数列の中からB3と合致するデータ数を出すことです。

回答No.4

Countifsでは3つの検索範囲が列数、行数とも同じである必要があります。質問文を見ると、3つめの列数が他と違うためエラーになったのでしょう。

queignole
質問者

お礼

ご回答ありがとうございます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>=COUNTIFS(sheet1!A$1:A$200,E$1,sheet1!C$1:C$200,"2",sheet1!G$1:Q$200,B3) COUNTIFS関数の範囲は同じ大きさでなければなりません。 すなわち、最後の範囲が「sheet1!G$1:Q$200」と1列のデータになっていないためです。 G列だけの集計なら「sheet1!G$1:G$200」にすればエラーなく計算できます。 もしご希望の集計条件が、最後の検索条件だけ列範囲が異なる条件で集計したいなら、計算負荷の高い配列数式を使用する必要があります。 =SUMPRODUCT((sheet1!A$1:A$200=E$1)*(sheet1!C$1:C$200="2")*(sheet1!G$1:Q$200=B3)) #気になったので確認ですが、数式では検索値が「"2"」となっていますが、文字列の「2」を検索していて、数値の「2」を検索していないのですね。

queignole
質問者

補足

ご回答ありがとうございます。 ご紹介の式の意味は分かりましたが、その通りに入力してもエラーになります。 それと…検索値は文字列ではなく数値を検索したかったのでした。こちら http://www.jimcom.co.jp/excel/function02/000137.html を見たら、直接入力するときは” ”で囲め、とありましたので。誤解だったようです。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

こちらに解説がありますが http://dekiru.net/article/4514/ •すべての[範囲]は同じ行数、列数を指定する必要があります。 なので最後の範囲が他の範囲と違いますので#value!となります。 対応としては下記の数式でできると思います。 =SUMPRODUCT((Sheet1!A$1:A$200=E$1)*(Sheet1!C$1:C$200=2)*(Sheet1!G$1:Q$200=B3))

queignole
質問者

補足

ご回答ありがとうございます。 ご紹介の式の意味は分かりましたが、その通りに入力してもエラーになります。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

循環参照では?

queignole
質問者

補足

ご回答ありがとうございます。 循環参照であるとのエラーはありませんでした。

関連するQ&A

  • COUNTIFS関数 条件が日付の場合の入力方法

    いつも回答ありがとうございます。 別シートに一覧があります。この別シートから個数を算出し、集計用シートに個数を表示させようと思っています。COUNTIFSの記述方法通り【集計用のC4セルに=COUNTIFS(一覧!$D$8:$D$76,C3,一覧!B8:B51,B4)】に入力しましたが、結果がVALUEになります。日付の条件記述方法が間違っていると思われますが、何処が間違っているのか分かりません。御指導の程よろしく願い致します。 一覧 B8:B100 に日付 D8:D100 に商品名 集計用シート B4:B100 に日付が連番で入力されている C3:Q3 に商品名が入力されている 集計用シートのセル番地を使用して条件入力。

  • COUNTIFS関数について

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

  • 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)のようにセルで入力するにはどのようにすればいいのでしょうか また、他に方法があれば教えていただけないでしょうか よろしくお願いいたします。

  • Excel2003におけるCountIFS関数

    Excel2003におけるCountIFS関数 Excel2007にはCountIFS関数というのがあり、一覧表から複数の条件を満たしたデータ(行)の件数をカウントできると思います。 この関数のExcel2003版は無いのでしょうか? クロス集計表を作成したいのですが、ピボットテーブルだと、件数がゼロ件の見出しは表示されないので、自分で手作りしたいと思っています。 教えて下さい。宜しくお願い致します。

  • 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以下でか×のセルの数 これがなかなかうまくいきません。 申し訳ありませんが対応方法がお分かりの方、 ご伝授頂けませんでしょうか? よろしくお願いします。

  • 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の数値を出そうとたのですが、ゼロになってしまいました。

  • countifs関数

    countifs関数で複数条件に合うものをカウントしたいのですが たとえばA列にあるリンゴとミカンとバナナの中で B列にあるA商店 C列にある掛け売り といったようなカウントをする場合 どのように設定すればいいのでしょうか?

  • エクセル countifs関数の記述法を教えて

    画像の一覧表から、A列に"○"が付いた行だけについて、75歳~79歳の男性の人数をカウントしたいのですが。 "○"を付けるする前の一覧表については、先の質問(No.8135362)で回答をいただき解決しました。    =COUNTIFS(C2:I6,">=70",C2:I6,"<80",D2:J6,"男") で5人となります。 このたび、A列に"○"を付けた行だけについてカウントする必要になり、次の式を立てましたが、#VALUEがでてしまい、どうにもなりません。    =COUNTIFS(A2:A6,"○",C2:I6,">=70",C2:I6,"<80",D2:J6,"男") countifs関数に、subtotal関数のような機能があればよいのですが、わかりません。 思いつくのは、フィルターをかけた後、その一覧表を、別シートにコピーペーストしてから、最初の式でカウントする方法しか思いあたらないのですが。 実際の表はもっとずっと大きいので、ひとつの関数式でできないものかと思っています。 よろしくお願いします。

  • エクセル、COUNTIFS関数の範囲指定について

    エクセル2010です。 「A1の文字列が、B列とC列の中から合致し、さらにD列の"○○"という条件を満たすものはいくつあるか」 という数式を作りたいです。 写真でいうと、B・C列の中から中央区があるかどうか、さらにその中に山田がいるか、という検索式です。 そこで、COUNTIFS関数を使い、fxボタンで半自動で作ったところ、 =COUNTIFS(B:C,A1,D:D,"山田") となったのですが、なぜか結果はエラーになってしまっています。 どうやら検索条件の範囲が「B:C」になっているのが問題なのか、B:BやC:Cだけにすると、ひとつの列なら正常に計算するようです。 そこで式を二つに分け、プラスでつなげてみました。 =COUNTIFS(B:B,A1,D:D,"山田")+COUNTIFS(C:C,A1,D:D,"山田") こうしてみると一応成功しました。 しかし動作が重くなり、処理に数秒かかるようになってしまいました。 (B:Bなどひとつの列なら、数式を記入した瞬間に結果がでます) できれば数式は短くシンプルにしたいので、前述の短い形式のようにならないものか、と思います。 COUTIFS関数で、検索範囲を「○列~△列」のようにできないものでしょうか? アドバイスをよろしくお願いします。

  • マクロ 関数COUNTIFS 使用時の?

    いつも回答して頂きありがとうございます。 マクロの記述中にも関数の入力が必要な場合があると最近知った者です。 で、質問ですが、 集計用シートのC3・D3・E3・・・・に商品名が入力されている 集計用シートのB4・B5・B6・・・・に日付が連続して入力されている 履歴シートから1日単位で商品の動きを調査したいと思いますが マクロの記述中にCOUNTIFSを使う方法はあるのでしょうか? 商品名毎の繰り返し処理を記述しましたが、参照セルの移動方法が分かりません。御指導の程宜しくお願い致します。(マクロ記述の中にある??が分からない箇所です。) Sub 集計4() Dim retu As Long retu = 3 For retu = 3 To Cells(3, Columns.Count).End(xlToLeft).Column Worksheets("集計用").Cells(4, retu).Formula = "=COUNTIFS(データ元!B8:B60000,集計用!??,データ元!D8:D60000,集計用!??)" Next retu End Sub

専門家に質問してみよう