• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:countifの範囲的な条件の作り方)

【Excel】countif関数を使った範囲条件の作り方

このQ&Aのポイント
  • エクセルでのcountif関数を使用して、範囲条件を設定する方法について説明します。
  • 具体的な例として、特定の値の範囲に該当するセルの個数を数える方法を解説します。
  • 小数点の有無やパーセンテージ表記などが原因で、正しい値が得られない場合の対処法も紹介します。

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

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

適当な区間ごとに数式で集計するならFREQUENCY関数が簡単です(添付画像参照)。 A列に元データ、C1:C20セルに5%、10%、15%、・・・100%とオートフルコピーしておきD1:D20セルを選択し以下の式を入力して、Ctrl+Shift+Enterで確定します。 =FREQUENCY(A:A,C1:C20) 数式を利用しないなら、ピボットテーブルを利用する方法もあります。 行フィールドに%の数字の項目を配置し、この行フィールドで右クリックから「グループ化」で最小値を0、最大値を1、区間を0.05にしてください。 ちなみに、該当データが無い項目部分も表示させたい場合は、同じく右クリックから「フィールドの設定」のレイアウトと印刷タブで「データのないアイテムを表示する」にチェックを入れてください。

devilsway
質問者

お礼

アドバイス有り難うございます。 びっくりするほど、スムーズにできました。 これは最適な関数と言えるモノだと思います。 今後、いろんな作業に応用できるような気がします。 自分だけでなく、同じ問題にぶつかった人のためにも ベストアンサーにしたと思います。 有り難うございました。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.5です! たびたびごめんなさい。 投稿した後で気づきました。 いっそのこと前回のD列(未満の列)も利用すればもっと判りやすい表になると思います。 もう一度画像をアップしてみます。 ↓の画像の場合前回より少し数式が変わってきます。 E3セルは =SUMPRODUCT(($A$2:$A$1000>=C3)*($A$2:$A$1000<D3)*($A$2:$A$1000<>"")) となり、100%の行までオートフィルでコピー! 表内の101%が気になればフォントの色を白にして目立たなくしておいた方が良いかもしれません。 何度も失礼しました。m(__)m

devilsway
質問者

お礼

参考にさせていただきます。 本当にていねいに有り難うございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! 一例です。 質問では整数のパーセンテイジでなく、小数点以下の表示になっていますので、 空白部が出てしまいます。 仮に5.5%の場合は 0~5% 6~10% のどちらにも入らない状態になります。 勝手に↓のような表を作ってみました。 実際はC列の薄い緑色の列だけでOKなのですが、判りやすくするためにD列の「未満」の表示もしています。 データがA列にあるとしてその各範囲の個数を出す方法です。 画像ではE3セルに =SUMPRODUCT(($A$2:$A$1000>=C3)*($A$2:$A$1000<C4)*($A$2:$A$1000<>"")) (エラー処理はしていません) という数式を入れオートフィルで下へコピーしています。 画像の最後の2行に注意をしてください。 範囲の区切りが少し変わりますので、ここは気を付けておきます。 100%を超えるものはないと思いますので、画像の23行目(100%以上の行まで)コピーでやめておきます。 C列の最終行は別に101%でなくてももっと大きな数値でも構いません。 数式の関係で100%の行は100%以上○○%未満となりますので、100%の行以降に一つデータが必要です。 とりあえず元データの1000行目まで対応できるようにしたいますが、 データ量が多すぎる場合、このSUMPRODUCT関数は配列数式ですのでPCに負担をかけてしまいます。 1000行程度なら問題ないとは思いますが・・・ 参考になれば良いのですが 他に良い方法がればごめんなさいね。m(__)m

devilsway
質問者

お礼

アドバイス有り難うございます。 画像付きで複数にわたり、回答していただいたのに、 ポイントがつけられないのが残念です。 今回使った関数SUMPRODUCTを今後、使いこなせるように なりたいです。 本当にありがとうございました。

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.4

データの区分方法に疑問を感じます。0~5%、5~10%、10~15%・・・95~100%とされてはどうでしょうか。その場合で案を提示させていただきます。 まず、データの数式を次のように変更します。 =ROUND(数式,3) また、それぞれの範囲の個数は次の数式で求めます。 =COUNTIF(範囲,"<=0.05") =COUNTIF(範囲,"<=0.1")-COUNTIF(範囲,"<=0.05") =COUNTIF(範囲,"<=0.15")-COUNTIF(範囲,"<=0.1") =COUNTIF(範囲,"<=0.2")-COUNTIF(範囲,"<=0.15") =COUNTIF(範囲,"<=0.25")-COUNTIF(範囲,"<=0.2") =COUNTIF(範囲,"<=0.3")-COUNTIF(範囲,"<=0.25") =COUNTIF(範囲,"<=0.35")-COUNTIF(範囲,"<=0.3") =COUNTIF(範囲,"<=0.4")-COUNTIF(範囲,"<=0.35") =COUNTIF(範囲,"<=0.45")-COUNTIF(範囲,"<=0.4") =COUNTIF(範囲,"<=0.5")-COUNTIF(範囲,"<=0.45") =COUNTIF(範囲,"<=0.55")-COUNTIF(範囲,"<=0.5") =COUNTIF(範囲,"<=0.6")-COUNTIF(範囲,"<=0.55") =COUNTIF(範囲,"<=0.65")-COUNTIF(範囲,"<=0.6") =COUNTIF(範囲,"<=0.7")-COUNTIF(範囲,"<=0.65") =COUNTIF(範囲,"<=0.75")-COUNTIF(範囲,"<=0.7") =COUNTIF(範囲,"<=0.8")-COUNTIF(範囲,"<=0.75") =COUNTIF(範囲,"<=0.85")-COUNTIF(範囲,"<=0.8") =COUNTIF(範囲,"<=0.9")-COUNTIF(範囲,"<=0.85") =COUNTIF(範囲,"<=0.95")-COUNTIF(範囲,"<=0.9") =COUNTIF(範囲,">0.95")

devilsway
質問者

お礼

アドバイス有り難うございます。 範囲の指摘、まさにその通りだと思います。 かつ、countifを使った処理の仕方ですから、 私の質問に的確に解答いただいていると思います。本当にありがとうございます。

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

補足情報です。 添付ファイルのC列のデータは、「~5%」のように表示されていますが、実際のデータは、C1に5%、C2に10%と入力してオートフィルし、セルの書式設定の表示形式タブでユーザー定義にして「"~"0%」としてあります。 また、オートフィルタで集計する場合は、%の数値を行フィールドだけでなくデータフィールドにも配置した場合は、データフィールドを右クリックから「(値)フィールドの設定」で集計の方法を「データの個数」にして下さい。

devilsway
質問者

お礼

細かい設定にいたるまで、アドバイスいただき有り難うございました。

  • akiomyau
  • ベストアンサー率43% (555/1280)
回答No.1

まさに表示桁数の問題だと思います。 表示に合わせるのであれば表示桁の1つ下のけたを四捨五入されることを考えれば 式をそれに合わせて変更してはどうでしょうか。 6から10%であれば =COUNTIF(範囲,">=0.055")-COUNTIF(範囲,">=0.105") のようにしてはどうでしょうか。

devilsway
質問者

お礼

アドバイス有り難うございます。 参考にさせていただきます。

関連するQ&A