スプレッドシートのFREQUENCY関数の使い方|度数分布

スポンサーリンク

「テストの点数を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に次のように入力します。

セル区間の上限値意味
D2200〜20点
D34021〜40点
D46041〜60点
D58061〜80点
D610081〜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関数で作った度数分布表をもとに、ヒストグラムを作成できます。手順は次のとおりです。

  1. FREQUENCY関数で度数分布を算出する(上記の基本例の手順)
  2. 区間ラベル列(例: 「0〜20」「21〜40」…)とFREQUENCY結果列を選択する
  3. メニューから「挿入」→「グラフ」を選ぶ
  4. グラフの種類で「縦棒グラフ」を選択する
  5. 必要に応じてタイトルや軸ラベルを調整する

区間ラベルは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}) のようなシンプルな例から試してみてください。

タイトルとURLをコピーしました