ひとりマーケティングのためのデータ分析
SPILL

TOOLS / STATISTICS

データの「偏り」と全体像をひと目でつかむ、
Excelでのヒストグラムのつくり方。

階級幅の決め方から、分析ツールの使い方、多様なスタイルのアウトプットまで。

2026/4/26

晴花

HARUKA

bin の数をいくつにするか、どこから始めるか——どちらも"正解"はない。でも無頓着でいると、同じデータから全然違う絵が出来上がる。

ヒストグラムとは

値の分布をつかむためのツールです。観測値を「階級」と呼ぶ区間ごとに振り分け、その個数(度数)を棒の高さで可視化します。QC 7 つ道具のひとつとして工学・品質管理で広く使われるほか、金額・数量の分析ツールとしても有効です。

境界値型
横軸に階級の境界値を表示。統計ソフト・言語の標準出力に多い形式
中心値型
横軸に各階級の中央値を表示。視覚的に読みやすいが実装に一手間かかる
なぜ Excel でつくるのが面倒なのか

境界値型・中心値型はいずれも、R・Python・統計ソフトでは標準出力として得られる形式です。しかし Excel の「棒グラフ」はデフォルトで要素間に隙間が入り、横軸もカテゴリ軸として扱われるため、横軸を数値軸にした隙間なしのヒストグラムを作るには「棒グラフ+散布図の複合グラフ」という迂回が必要です。Excel 2016 以降に追加された「ヒストグラム」グラフは便利ですが、柔軟なカスタマイズには限界があります。このページでは汎用性の高い方法を採用します。

SPILL MODE

Excel 365 / 2021 以降で使える「自動展開(スピル)」式に切り替えます。数式のコピー操作が不要になります。

01

元データ

ある月の取扱商品の売上(万円)を個人別に集計したものです。売上はすべて 1 万円単位で、端数は生じないものとします。

元データ・ヒストグラム
02

概念を理解する

このページでは 2 種の成果物を目的とします。横軸の違いに注目し、Type A:境界値型Type B:中心値型と呼びます

このページ限りの用語です。

TYPEA:境界値型, TYPEB:中心値型

棒の部分を bin(ビン)または と呼び、対応する横軸上の区画を 階級 と呼びます。左から順に「第 1 階級」「第 2 階級」……と呼びます。

bin と階級の対応
第1〜第n階級

階級と階級の境目を 境界、その値を 境界値 と呼びます。ある階級に注目したとき、下方側を 下境界値、上方側を 上境界値 といい、その差を 階級の幅 と呼びます。

境界値の説明図

第 5 階級の幅は 60 − 50 = 10。すべての階級で幅を等しくすることが望まれます

不等間隔にすると、度数=棒の高さという単純な読み方が崩れます。経済分野では意図的に不等間隔を用いるケースもあります。

階級の幅
第5階級の幅=10

「境界上の値はどちらの bin に入るのか」という問題を事前に解消しておく必要があります。

  • 下境界値 = 階級下限(境界上の値は右の bin に入る)
  • 上境界値 = 階級上限(境界上の値は左の bin に入る)

どちらが正しいわけではなく、どちらを選んだかを把握していることが重要です。このページでは 下境界値 = 階級下限 の仕様で進めます。

下境界=階級下限の仕様

階級の幅がすべて等しいとき、柱の高さが 度数(頻度) を意味します。第 5 階級の度数が 7 であれば、売上が 50〜59 万円の人が 7 人いることを示します。

度数の説明

ヒストグラムを作るにあたって決めることは主に 3 つです。

決めること:階級の幅・第1階級の下境界値・境界値型か中心値型か
03

階級の幅をいくつにするか

晴花

階級幅を決めることと bin の数を決めることは表裏一体。どちらも唯一の正解はないが、算出の出発点として3つのアルゴリズムが知られている。

階級幅の選択はグラフ作成者に委ねられ、正解が存在しません。しかしそれがヒストグラムの形状を大きく左右するファクターになるのが難しいところです。下のスライダーで bin 数を変えると、その影響を確認できます。


このデータには 2 つの山が潜んでいます。その存在を伝えるにはどの bin 数が適切か——そうした判断が主観に大きく依存することを体感できるかと思います。

「感覚」とは別に、先人たちが試行錯誤してきた 3 つのアルゴリズムを紹介します。複数の候補値を比較できる状態の方が判断しやすいです。

  • 平方根選択
  • スタージェスの公式
  • スコットのルール

まず MIN・MAX と Range(範囲)を求めておきます。

  • F2=MIN(D2:D25)
  • G2=MAX(D2:D25)
  • H2=G2-F2
MIN・MAX・Rangeを計算

平方根選択(Square-root choice)

サイズを $n$ としたとき、bin 数 $k$ を求めてから階級幅 $h$ を計算します。

$$k = \sqrt{n}, \qquad h = \frac{\rm{Range}}{k}$$

  • G6=SQRT(COUNT(D2:D25))
  • H6=H2/G6
平方根選択

スタージェスの公式(Sturges' formula)

$$k = \log_2 n + 1, \qquad h = \frac{\rm{Range}}{k}$$

  • G7=LOG(COUNT(D2:D25), 2) + 1
  • H7=H2/G7
スタージェスの公式

スコットのルール(Scott's normal reference rule)

直接 $h$ を求めます。

$$h = \frac{3.5\sigma}{n^{1/3}}$$

  • H8=3.5 * STDEV.P(D2:D25) / COUNT(D2:D25)^(1/3)
スコットのルール

求めた階級幅を適用する際の落とし穴

仮に平方根選択の $h$(13.2681……)をそのまま適用すると——

h=13.2681を適用した場合

各階級で観測値のカウントが揃わない「歯抜け(くし状)」のヒストグラムが生じます。離散量を扱うときの典型的な落とし穴です。

歯抜けが生じた例

求めた階級幅を丸める

回避策として、$h$ を 測定単位の整数倍 で丸めます。この例の売上は端数が発生しないので測定単位は 1 万円です。

  • I21
測定単位を入力

キーナンバー 1, 2, 5, 10 を用意し、それらと測定単位と掛け合わせた候補値を用意します。

  • I5=$I$2 * I4
  • I5=I2 * I4:L4
キーナンバーを配置
キーナンバーを配置
測定単位×キーナンバー
測定単位×キーナンバーを計算

さらに $h$ の常用対数を使って候補値を精査します。

  • I6=I$5 * POWER(10, INT(LOG10($H6)))
  • I6=I5# * POWER(10, INT(LOG10(H6:H8)))
丸め候補値を算出

各アルゴリズムの $h$ に近い値を探します。この例では平方根・スタージェスなら 10、スコットなら 20 が妥当な候補です。

丸め候補値を比較

Range が 65 なので $h=10$ で bin が約 7 本、$h=20$ で約 4 本となります。分布表現の観点から、ここでは $h=10$ を選択します

以降の計算ではセル I16 の平方根の結果を参照します。

キーナンバー「1, 2, 5, 10」でよい値が見つからなかった場合(測定単位がより小さいか,より大きい場合)、 20, 50, 100, ... あるいは ..., 0.1, 0.2, 0.5 といった感じにオリジナルのキーナンバーを$10^𝑑$ 倍しながら前後にスコープを拡げ,探索を繰り返します($𝑑$: 0を初期値にインクリメント、 あるいはデクリメント)。また、面倒なことを抜きに測定単位から$𝑑$の見当を直接つける場合、 キーナンバーを配列数式,またはスピルで I4:L4 ={1,2,5,10}*POWER(10,-INT(LOG10(I2))) と置き換えます。

04

第 1 階級の下境界値を決め、階級を定義する

階級をどこから始めるかも、ヒストグラムの形状に影響します。下境界を少しずらすだけで印象が大きく変わります。

下境界を10・12・14・16とした場合の比較

明確な意図がない場合は、ラベルが読みやすい(キリのよい)値になるよう選ぶのが実務的には妥当です。

  • F11=FLOOR.MATH(F2, I6)

MIN より低く、最も近い $h$ の倍数を第 1 階級の下境界として使います。

FLOOR.MATHで下境界を計算

分析ツールに渡すための階級表を作ります。見出しとして「階級名」「下境界」「上境界」「上境界−u/2」を用意します。

階級表の見出しを作成

1 番目の階級の下境界・上境界を求めます。

  • F14第1階級
  • G14=IF(COUNTA($F$14:F14)=1,$F$11,H13)
  • H14=G14+$I$6

上境界が MAX を超えるまでの数を計算し、スピルで下境界・上境界を一括生成します。

  • G14=IF(((G2-F11)/I6)-QUOTIENT(G2-F11,I6)<>0, SEQUENCE(ROUNDUP((G2-F11)/I6,0), 1, F11, I6), SEQUENCE(ROUNDUP((G2-F11)/I6,0)+1, 1, F11, I6))
  • H14=G14#+I6
  • F14="第" & SEQUENCE(ROUNDUP((G2-F11)/I6,0), 1) & "階級"
上境界-u/2を計算

次に、「上境界 − u/2」列を作ります。これは分析ツールが 「ある値以下」 でカウントを行うため、境界上の値を含まない閾を設定する工夫です。

  • I14=H14-$I$2/2
上境界-u/2を計算

F14:I14 を「上境界」が MAX をカバーするまでコピーします。

階級表をコピーして完成

I14 以下をスピルで埋めます。

  • I14=H14#-I2/2
スピル版:上境界-u/2

なお最後の階級の直前で上境界値=MAX が成立した場合、その階級の「上境界−u/2」を上境界値と同じ値に書き換えて最後の階級と統合することがあります

100 点満点のテストの得点分布を 10 本の bin で見る場合が好例。

05

分析ツールを走らせる

データ タブ → 分析 グループの データ分析 をクリックします

データ→データ分析

ボタンが表示されていない場合、「分析ツール」アドインのインストールが必要です(分析ツールを読み込む — "Office")。

データ分析 ダイアログで ヒストグラム を選択して OK

データ分析 ダイアログ
ヒストグラムを選択
ヒストグラム ダイアログ
ヒストグラムダイアログの設定

入力範囲データ区間出力先 を指定します。見出しも選択している場合は ラベル にチェックを入れます。

度数分布表が得られました。目的のヒストグラムはこの表をソースとして描きます。

度数分布表

グラフ化のため、見出し部分を消去し「下境界」列の値で上書きします。

  • F23(削除)
  • F24=G14

見出しとその直下の値をすべて消去し、「下境界」列の値を転記します。

  • F23:F31(削除)
  • F24=G14#
度数分布表を整形

「最大頻度」もあわせて計算しておきます。

  • H23最大頻度
  • H24=MAX(G24:G31)
最大頻度を計算
06

グラフ化

境界値型

「次の級」を除く見出しを含む度数分布表を選択し……

度数分布表を選択

挿入 タブ → グラフ グループの 縦棒/横棒グラフの挿入集合縦棒

集合縦棒を挿入
集合縦棒を選択

書式 タブ → 現在の選択範囲 から 頻度 系列を選択し、選択対象の書式設定要素の間隔0%使用する軸第 2 軸 に設定します。

"頻度"系列の書式設定
頻度系列を選択
データ系列の書式設定
要素の間隔0%・第2軸に設定

グラフのデザイン タブ → グラフの種類の変更 で、最大頻度 系列を 直線(散布図) に変更します。

グラフの種類の変更 ボタン
グラフの種類の変更
グラフの種類の変更 ダイアログ
最大頻度を散布図に変更

横(値)軸の書式設定で以下を設定します。

  • 最小値:第 1 階級の下境界値
  • 最大値:最後の階級の上境界値
  • 主:$h$ の整数倍(基本は 1 倍)

さらに目盛線(目盛の種類外向き)を設定し、第 2 縦軸は ラベルの位置なし にして不可視にします。

横軸の設定
横軸の設定
第2縦軸を不可視に
第2縦軸を不可視に

境界値型ヒストグラムの完成です。

境界値型ヒストグラムの完成
晴花

「20 ってどの棒に入るの?」——発表の場でこれを聞かれることがある。下境界値=階級下限の仕様なら、20 は 20〜29 の bin に入ると答えられる。仕様を把握していることが大切。

中心値型への転換

「中心値」は階級を代表する値のひとつで、下境界と上境界の中間値です(第 5 階級なら (50+60)/2 = 55)。以下、横軸を中心値型に転換する工程です。

境界値型から中心値型への転換イメージ

グラフの種類の変更 から 頻度 系列と 最大頻度 系列の第 2 軸を入れ替えます。中心値型では 最大頻度 側を第 2 軸にします。

系列の第2軸を入れ替え

グラフのデザイン タブ → グラフの要素の追加第 2 横軸 を追加します。

第 2 軸 横(値)軸の書式設定で以下を設定します。

  • 最小値:第 1 階級の下境界値 $- h/2$
  • 最大値:最後の階級の上境界値 $+ h/2$
  • 主:$h$ の整数倍

ラベルの位置下端/左端 に設定し、元の横(値)軸は ラベルの位置なし にして不可視にします。

第2横軸を追加
第2横軸を追加
第2横軸の設定
第2横軸の設定
元の横軸を不可視に
元の横軸を不可視に

中心値型ヒストグラムの完成です。

中心値型ヒストグラムの完成

晴花