Excelで「テストの点数を10点刻みで集計したい」「売上データを価格帯ごとに分類したい」と思ったことはありませんか。こうした度数分布表(データを区間ごとに集計した表)を手作業で作ると、数え間違いや集計漏れが起きがちです。
そんなときに頼れるのがFREQUENCY関数です。区間を指定するだけで、各区間に含まれるデータの個数を一括で返してくれます。本記事では、ExcelのFREQUENCY関数の使い方を基本から応用まで丁寧に解説します。
Googleスプレッドシートで同じ関数を使いたい方は、スプレッドシートのFREQUENCY関数の使い方をご覧ください。
FREQUENCY関数とは?できることを確認しよう
FREQUENCY関数は「フリクエンシー関数」と読みます。英語の「frequency(頻度・度数)」が語源です。
この関数は、数値データを指定した区間(ビン)ごとに振り分け、各区間に何件のデータが含まれるかを数えてくれます。つまり、度数分布表を一発で作れる関数です。
たとえば、30人分のテスト結果があるとします。「0〜60点」から「91〜100点」まで5つの区間を設定しましょう。それぞれ何人いるかを、FREQUENCY関数が自動で集計してくれます。
手動でフィルターをかけたり、目視で数えたりする必要はありません。データ量が多くなるほど、FREQUENCY関数の効果を実感できますよ。
書式と引数(データ配列・区間配列)
FREQUENCY関数の基本構文は次のとおりです。
=FREQUENCY(データ配列, 区間配列)
引数は2つとも必須です。それぞれの意味を表で確認しましょう。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| データ配列 | 必須 | 度数を数える対象の数値データが入ったセル範囲 |
| 区間配列 | 必須 | 区間の上限値を並べたセル範囲(ビンの境界値) |
データ配列の中にある空白セルやテキストは自動で無視されます。数値以外が混ざっていてもエラーにはなりません。
戻り値が「区間数+1」になる理由
FREQUENCY関数の戻り値は、区間配列の要素数よりも1つ多くなります。これはFREQUENCY関数の大きな特徴です。
たとえば、区間配列に {10, 20, 30} の3つを指定した場合、戻り値は4つです。内訳は次のとおりです。
| 要素 | 区間の意味 | 数える範囲 |
|---|---|---|
| 1番目 | 10以下 | データ ≤ 10 |
| 2番目 | 11〜20 | 10 < データ ≤ 20 |
| 3番目 | 21〜30 | 20 < データ ≤ 30 |
| 4番目 | 31以上 | データ > 30(最大区間を超えた値) |
最後の要素は「区間の上限を超えたデータの件数」です。この要素のおかげで、すべてのデータが漏れなく集計されます。出力先のセル範囲を確保するときは、区間の数に1を足した行数を用意してください。
基本の使い方|度数分布表をゼロから作る
ここからは、実際にExcelを操作しながら度数分布表を作る手順を3ステップで紹介します。
STEP1:区間(ビン)を準備する
まず、集計に使う区間の上限値をセルに入力します。
今回は、30人分のテスト得点(0〜100点)を以下の区間で集計してみましょう。
| セル | 区間の上限値 | 意味 |
|---|---|---|
| D2 | 60 | 60点以下 |
| D3 | 70 | 61〜70点 |
| D4 | 80 | 71〜80点 |
| D5 | 90 | 81〜90点 |
| D6 | 100 | 91〜100点 |
区間の上限値は昇順に並べてください。並び順がバラバラだと正しい結果が得られません。
STEP2:数式を入力する(Ctrl+Shift+Enter)
得点データがA2:A31に入っているとします。出力先はE2:E7の6セル(区間5つ+1)です。
入力手順はお使いのExcelバージョンによって異なります。
Microsoft 365 / Excel 2021以降の場合:
=FREQUENCY(A2:A31, D2:D6)
先頭セル(E2)を選択し、上の数式を入力してEnterキーを押します。スピル機能により、E2:E7に結果が自動展開されます。
Excel 2019以前の場合:
{=FREQUENCY(A2:A31, D2:D6)}
- 出力先のE2:E7をすべて選択します
- 数式
=FREQUENCY(A2:A31, D2:D6)を入力します - Ctrl+Shift+Enter の3つのキーを同時に押します
正しく入力できると、数式バーに {=FREQUENCY(...)} と波括弧が自動で付きます。この波括弧は手入力しないでください。Enterだけで確定すると、先頭の1セルにしか結果が返りません。
STEP3:結果を読み解く
数式を入力すると、次のような結果が返ります。
| セル | 区間 | 度数(人数) |
|---|---|---|
| E2 | 60点以下 | 5 |
| E3 | 61〜70点 | 8 |
| E4 | 71〜80点 | 10 |
| E5 | 81〜90点 | 5 |
| E6 | 91〜100点 | 2 |
| E7 | 100点超 | 0 |
E7は「100点を超えるデータ」の件数です。テストの満点が100点であれば0になるのが正常です。逆に、ここに値が入っていれば入力ミスの発見に役立ちますよ。
区間の「以下」と「未満」――どちらの意味か?
度数分布表を作るうえで、区間の境界値の扱いは非常に重要です。「70点以下」と「70点未満」では結果が変わります。FREQUENCY関数の仕様を正確に押さえましょう。
FREQUENCY関数の境界値ルール
FREQUENCY関数の区間は「以下(<=)」固定です。変更はできません。
区間配列に {60, 70, 80} を指定した場合の動作は次のとおりです。
| 区間 | 条件 |
|---|---|
| 60以下 | データ ≤ 60 |
| 61〜70 | 60 < データ ≤ 70 |
| 71〜80 | 70 < データ ≤ 80 |
| 81以上 | データ > 80 |
たとえば、ちょうど70点のデータは「61〜70」の区間に入ります。「71〜80」には含まれません。
境界値を「未満」にしたいときの回避策
「60点以上70点未満」のように「未満(<)」で集計したい場面もありますよね。FREQUENCY関数だけでは実現できないため、別の方法で対応します。
方法1:区間の上限値を調整する
整数データであれば、上限値を1引くことで実質的に「未満」にできます。
=FREQUENCY(A2:A31, {59, 69, 79, 89, 99})
上限値を59にすれば「59以下」=「60未満」と同じ結果です。ただし、小数を含むデータには使えません。
方法2:COUNTIFS関数で代替する
小数データや複雑な条件が必要な場合は、COUNTIFS関数を使いましょう。COUNTIFS関数なら「以上」「未満」を自由に指定できます。
=COUNTIFS(A2:A31, ">="&D2, A2:A31, "<"&E2)
Microsoft 365ならスピルで一発入力
Microsoft 365やExcel 2021以降では、動的配列(スピル)に対応しています。FREQUENCY関数はスピル機能と非常に相性がよい関数です。
旧バージョン(CSE)との入力方法の違い
| 項目 | Microsoft 365 / Excel 2021 | Excel 2019以前 |
|---|---|---|
| セル選択 | 先頭セル1つだけ | 出力範囲を全選択 |
| 確定操作 | Enter | Ctrl+Shift+Enter |
| 数式表示 | =FREQUENCY(...) | {=FREQUENCY(...)} |
| 結果の展開 | 自動スピル | 選択範囲に固定 |
スピル版では、先頭セルに数式を入力するだけで結果が自動的に下方向に広がります。出力範囲を事前に選択する手間がなくなりました。
スピル対応版の注意点
スピルで結果が展開される先のセルに値が入っていると、#SPILL! エラーが発生します。出力先のセルは空にしておいてください。
また、スピルの結果は1つの数式で管理されています。途中のセルだけを削除したり編集したりはできません。変更したい場合は、先頭セルの数式を修正しましょう。
CSE(Ctrl+Shift+Enter)方式で入力した数式は、Microsoft 365でもそのまま動作します。ファイルを共有する相手のバージョンが分からない場合は、CSE方式で入力しておくと安心ですよ。
COUNTIFとFREQUENCYの使い分け
度数分布表はCOUNTIF関数でも作れます。どちらを使うべきか迷う場面も多いので、違いを整理しましょう。
COUNTIF・COUNTIFSで同じことができる?
結論から言えば、COUNTIF・COUNTIFS関数でも度数分布表は作れます。ただし、作り方が異なります。
FREQUENCY関数で作る場合:
=FREQUENCY(A2:A31, D2:D6)
1つの数式で全区間の度数をまとめて出力します。
COUNTIFS関数で作る場合:
=COUNTIFS(A2:A31, ">"&C2, A2:A31, "<="&D2)
各区間ごとに1つずつ数式を入力します。区間が5つなら数式も5つ必要です。
どちらを使うべき場面の判断基準
| 判断基準 | FREQUENCY | COUNTIFS |
|---|---|---|
| 区間の境界ルール | 以下(<=)固定 | 以上・以下・未満・超を自由に設定 |
| 入力の手軽さ | 一括入力で完了 | 区間ごとに個別入力 |
| 区間の柔軟性 | 均等区間向き | 不均等・変則区間も自在 |
| 条件の追加 | 不可 | 複数条件を組み合わせ可能 |
FREQUENCY関数がおすすめの場面:
- 区間の境界が「以下」で問題ないとき
- 区間の数が多く、一括で処理したいとき
- データを素早くざっくり分布で確認したいとき
COUNTIFS関数がおすすめの場面:
- 「以上〜未満」のように境界ルールを指定したいとき
- 性別や部署など、数値以外の条件も加えたいとき
- 区間の幅がバラバラで柔軟に設定したいとき
迷ったら、まずFREQUENCY関数で試してみてください。境界値の扱いが合わなければCOUNTIFSに切り替える、という流れがスムーズですよ。
よくあるエラーと対処法
FREQUENCY関数は比較的シンプルですが、思った結果が得られないケースもあります。よくあるトラブルと対処法を確認しておきましょう。
結果が0になる・うまくいかない原因
原因1:先頭セルだけでEnterを押している(Excel 2019以前)
CSE方式で入力する場合、出力範囲を全選択してからCtrl+Shift+Enterで確定する必要があります。先頭セルだけ選択してEnterを押すと、最初の区間の値しか返りません。
対処法:出力先(区間数+1行分)をすべて選択し直してから、数式を入力してCtrl+Shift+Enterで確定してください。
原因2:データ範囲にテキストしかない
FREQUENCY関数は数値のみをカウントします。データ配列にテキストしか含まれていない場合、すべての区間で0が返ります。
対処法:数値が文字列として格納されていないか確認しましょう。セルの表示形式が「文字列」になっている場合は、「数値」に変更してからデータを再入力してください。
原因3:区間配列が昇順になっていない
区間の上限値がバラバラの順番だと、正しく集計されません。
対処法:区間配列は必ず小さい値から大きい値へ昇順に並べてください。
配列範囲のサイズが合わないときの直し方
CSE方式では、出力先として選択するセル範囲が「区間数+1」行分でないと正しく表示されません。
| 状況 | 症状 | 対処法 |
|---|---|---|
| 選択範囲が少ない | 一部の区間しか表示されない | 区間数+1行分を選択し直す |
| 選択範囲が多い | 余分なセルに0が表示される | 不要な行を削除するか範囲を縮める |
スピル対応版(Microsoft 365)では、出力サイズが自動調整されるため、この問題は発生しません。バージョンをアップグレードできる環境であれば、スピル版の利用をおすすめしますよ。
応用:ヒストグラムと組み合わせて可視化する
FREQUENCY関数で作った度数分布表は、ヒストグラム(棒グラフの一種)で可視化すると直感的に分布を把握できます。
手順は次のとおりです。
- FREQUENCY関数で度数分布表を完成させます
- 区間ラベル列と度数列を選択します
- 「挿入」タブ →「グラフ」→「縦棒グラフ」を選択します
- 棒の間隔を0%に設定すると、ヒストグラムらしい見た目になります
Excel 2016以降では「挿入」タブに専用の「ヒストグラム」グラフも用意されています。ただし、専用ヒストグラムは区間をExcelが自動設定するため、自分で区間を決めたい場合はFREQUENCY関数+縦棒グラフの組み合わせが確実です。
度数分布表だけでは見えにくい「データの偏り」や「外れ値」も、グラフにすると一目で分かります。分析結果を報告書やプレゼン資料に載せるときにも、ぜひ活用してみてください。
統計分析をさらに深めたい方は、STDEV.S関数(標準偏差)やPERCENTILE.INC関数(百分位数)も合わせてチェックしてみてくださいね。
まとめ
この記事では、ExcelのFREQUENCY関数の使い方を解説しました。最後にポイントを振り返りましょう。
- 構文:
=FREQUENCY(データ配列, 区間配列)で度数分布表を一括作成できる - 戻り値:区間数+1個の配列が返る。最後の要素は最大区間を超えた値の件数
- 境界値:「以下(<=)」固定。「未満」が必要ならCOUNTIFS関数で代替する
- 入力方法:Microsoft 365ではスピルで自動展開。Excel 2019以前はCtrl+Shift+Enterで確定する
- COUNTIFSとの違い:一括入力ならFREQUENCY、条件の柔軟さならCOUNTIFS
FREQUENCY関数は、データ分析の第一歩となる「分布の把握」を手軽にしてくれる便利な関数です。区間を変えるだけで集計の粒度を自由に調整できるので、いろいろなデータで試してみてください。
