「テストの点数を10点刻みで区切って、何人ずつ分布しているか知りたい」。こんな場面、データ分析をしていると出てきますよね。
COUNTIF関数で1つずつ条件を書いていく方法もありますが、区間が多いと数式がどんどん増えてしまいます。
そんなときに使えるのがFREQUENCY関数です。区間を指定するだけで、データの度数分布を一括で返してくれます。
この記事では基本の書き方から度数分布表の作り方、ヒストグラム作成の前処理まで紹介します。
FREQUENCY関数とは?
FREQUENCY関数(読み方: フリークエンシー関数)は、データを指定した区間ごとに数えて度数分布を配列で返す関数です。
名前はfrequency(頻度・頻度分布)が由来です。「0〜59点は何人?」「60〜79点は何人?」。こうした区間ごとのカウントを、数式1つでまとめて計算してくれます。
ポイントは配列関数であることです。結果が1つのセルではなく、複数のセルに縦方向にまとめて出力されます。Googleスプレッドシートでは自動的にスピル(はみ出し展開)されるので、特別な操作は必要ありません。
FREQUENCY関数にできることをまとめると、次のとおりです。
- データを任意の区間に分けて個数を集計する
- 度数分布表のもとになるデータを一括作成する
- ヒストグラム(棒グラフ)の前処理に使える
NOTE
FREQUENCY関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数がありますが、Sheets版は自動スピルに対応しているため入力がかんたんです。
FREQUENCY関数の書き方(構文と引数)
基本構文
=FREQUENCY(データ, 区間)
カッコの中に「何を調べるか」と「どの区間で区切るか」の2つを入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データ | 必須 | 度数を調べるデータ範囲(例: B2:B50) |
| 区間 | 必須 | 区間の上限値を並べた範囲(例: D2:D6) |
引数は2つだけです。シンプルですよね。「データ」の中にある値を「区間」の境界で区切って、それぞれ何個あるかを数えます。
大事なポイントが1つあります。戻り値の個数は「区間の数+1」になることです。たとえば区間を5つ指定すると、結果は6個返ります。最後の1つは「最大の区間を超えた値の個数」です。
FREQUENCY関数の基本的な使い方
テストの点数が入ったデータで、度数分布を作ってみましょう。
B2:B21にテストの点数(0〜100点)が20人分入っているとします。区間の上限値をD2:D6に次のように入力します。
| セル | 区間の上限値 | 意味 |
|---|---|---|
| D2 | 20 | 0〜20点 |
| D3 | 40 | 21〜40点 |
| D4 | 60 | 41〜60点 |
| D5 | 80 | 61〜80点 |
| D6 | 100 | 81〜100点 |
E2に次の数式を入力します。
=FREQUENCY(B2:B21, D2:D6)
結果がE2:E7に縦方向に展開されます。E2〜E6には各区間の人数が入り、E7には「100を超える点数の人数」が入ります。
区間の上限値は「以下」で判定されます。たとえばD2に「20」と入力した場合、20点ちょうどの人はこの区間に含まれます。21点の人は次の区間です。
TIP
空白セルとテキストは自動的に無視されます。数値データだけがカウント対象になるので、見出し行を含めてしまっても問題ありません。
FREQUENCY関数の実践的な使い方・応用例
アンケート結果の度数分布表を作る
5段階評価(1〜5点)のアンケート結果から、各評価の回答数を集計する例です。
B列に回答データ(1〜5の数値)が入っているとします。区間の上限値をD2:D5に「1, 2, 3, 4」と入力します。
=FREQUENCY(B2:B100, D2:D5)
結果は5つのセルに展開されます。
| 区間 | 意味 | 結果の位置 |
|---|---|---|
| 〜1 | 評価1の人数 | E2 |
| 〜2 | 評価2の人数 | E3 |
| 〜3 | 評価3の人数 | E4 |
| 〜4 | 評価4の人数 | E5 |
| 4超 | 評価5の人数 | E6 |
5段階評価なら区間は「1, 2, 3, 4」の4つです。最後の「4超」が自動的に評価5をカウントしてくれます。
度数分布表からヒストグラム(グラフ)を作る
FREQUENCY関数で作った度数分布表をもとに、ヒストグラムを作成できます。手順は次のとおりです。
- FREQUENCY関数で度数分布を算出する(上記の基本例の手順)
- 区間ラベル列(例: 「0〜20」「21〜40」…)とFREQUENCY結果列を選択する
- メニューから「挿入」→「グラフ」を選ぶ
- グラフの種類で「縦棒グラフ」を選択する
- 必要に応じてタイトルや軸ラベルを調整する
区間ラベルはFREQUENCY関数とは別に自分で作る必要があります。「0〜20」「21〜40」のように、わかりやすい表記を入力しておくとグラフが読みやすくなります。
NOTE
Googleスプレッドシートにはメニューの「挿入」→「グラフ」→「ヒストグラム」を使う方法もあります。ただしこの機能は区間の幅を自動で決めてしまいます。自分で区間を指定したいときはFREQUENCY関数+縦棒グラフの組み合わせがおすすめです。
売上金額の分布を分析する
売上データをFREQUENCY関数で区間ごとに集計すると、売上の分布パターンが見えてきます。
B列に各取引の売上金額が入っているとします。区間を「1万円以下/5万円以下/10万円以下/50万円以下」で区切ります。
=FREQUENCY(B2:B200, {10000, 50000, 100000, 500000})
区間の上限値はセル範囲の代わりに{}(波括弧)で直接指定することもできます。データの特性に合わせて区間幅を変えると、分布の偏りが見やすくなります。
よくあるエラーと対処法
FREQUENCY関数は引数2つのシンプルな関数ですが、結果が0になるケースがいくつかあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| すべて0になる | データ範囲に数値が入っていない | セルの書式が「テキスト」になっていないか確認する |
| 一部の区間が0 | 区間の上限値が昇順になっていない | 区間の値を小さい順に並べ直す |
| 結果が1つしか出ない | 区間に空の範囲を指定している | 区間のセル範囲にデータを入力する |
| 想定と数が合わない | 区間の境界値が「以下」で判定されている | 上限値を調整する(例: 80未満にしたいなら79を指定) |
| #REF!エラー | スピル先のセルに既存データがある | FREQUENCY結果が展開される範囲のセルを空にする |
区間の順番に注意
FREQUENCY関数は区間の値を小さい順に並べることを前提にしています。大きい順に並べると、正しい結果が得られません。
=FREQUENCY(B2:B21, {20, 40, 60, 80, 100}) ← OK
=FREQUENCY(B2:B21, {100, 80, 60, 40, 20}) ← NG: 正しく集計されない
「以下」判定を理解する
区間の境界値は「以下(<=)」で判定されます。たとえば区間に「60」を指定すると、60ちょうどはその区間に含まれます。
「60未満」にしたい場合は、上限値を「59」に変更してください。小数点のデータがある場合は「59.99」のように調整します。
テキストデータが混在している場合
データ範囲にテキストが混ざっていても、FREQUENCY関数はエラーになりません。テキストと空白セルは自動的にスキップされ、数値だけがカウント対象になります。
ただし、数値が文字列として保存されている場合は注意が必要です。セルの左上に小さな三角マークが表示されていたら、「表示形式」→「数値」に変更してデータを入力し直してください。
FREQUENCY関数とCOUNTIF関数の違い・使い分け
度数分布はCOUNTIF関数でも作れます。FREQUENCY関数との使い分けを整理しましょう。
| 比較項目 | FREQUENCY関数 | COUNTIF関数 |
|---|---|---|
| 数式の数 | 1つで全区間を一括集計 | 区間ごとに1つずつ必要 |
| 結果の形式 | 配列(複数セルに自動展開) | 単一の値(1セルに1結果) |
| 区間外の値 | 最後の要素で自動カウント | 自分で条件を追加する必要あり |
| 条件の柔軟性 | 数値の区間のみ | 文字列・ワイルドカードも可 |
| 修正しやすさ | 区間変更時に再計算が必要 | 各数式を個別に修正できる |
FREQUENCY関数を使うべき場面
- 区間が5つ以上あり、1つずつCOUNTIFを書くのが面倒なとき
- 度数分布表を一括で作りたいとき
- 区間外(最大値を超えるデータ)も自動でカウントしたいとき
COUNTIF関数を使うべき場面
- 文字列の条件でカウントしたいとき
- 区間の数が少なく(2〜3個)、個別に数式を書いたほうが早いとき
- 各区間の条件を柔軟に変えたいとき
COUNTIFS関数を使えば、複数の条件を組み合わせたカウントも可能です。「部署が営業部で、かつ売上が100万以上」のような集計にはCOUNTIFS関数が向いています。
TIP
FREQUENCY関数はARRAYFORMULA関数と同じ配列関数の仲間です。配列関数に慣れていない方は、ARRAYFORMULA関数の記事もあわせてチェックしてみてください。
まとめ
FREQUENCY関数は、データの度数分布を一括で求められる便利な配列関数です。
ポイントを整理します。
- 構文は
=FREQUENCY(データ, 区間)の2引数 - 結果は「区間の数+1」個の配列で返る(最後の要素は区間外の個数)
- 区間の上限値は昇順に並べる
- 境界値は「以下」で判定される(60なら60点を含む)
- 空白やテキストは自動で無視される
- 度数分布表を作ってヒストグラムの前処理にも使える
- 区間が多いときはFREQUENCY、条件が柔軟なときはCOUNTIF関数と使い分ける
まずは =FREQUENCY(B2:B21, {20, 40, 60, 80, 100}) のようなシンプルな例から試してみてください。
