「行きは時速40km、帰りは時速60km。平均速度は何km/hですか?」
つい「50km/h」と答えたくなりませんか? でもこれ、実は間違いなんです。AVERAGE関数で速度の平均を出すと、本当の平均よりも大きい値が返ってきてしまいます。
Googleスプレッドシートで速度や単価のように「率」のデータの正しい平均を求めるには、調和平均という計算方法が必要です。そして、それを一発で計算してくれるのが今回紹介する HARMEAN 関数です。
この記事ではHARMEAN関数の基本構文から、速度・単価・F値といった実務での活用例、AVERAGEやGEOMEANとの使い分け、よくあるエラーの対処までまとめて解説します。「平均値が直感とズレる気がする…」というモヤモヤを、この記事で一気にスッキリさせていきましょう。
スプレッドシートのHARMEAN関数とは?調和平均で正しい平均を求める
HARMEAN関数(読み方: ハーミーン関数)は、データの調和平均を返す統計関数です。「HARMEAN」は英語の「Harmonic Mean(調和平均)」の略で、Excelにも同名の関数があるため互換性も問題ありません。
調和平均とは、各データの逆数の平均を取り、さらにその逆数を求める計算方法です。数式で書くと次のようになります。
調和平均 = n / (1/x1 + 1/x2 + ... + 1/xn)
たとえば 40 と 60 の調和平均は 2 / (1/40 + 1/60) = 48 です。一方、AVERAGE関数で計算すると (40+60) / 2 = 50 ですよね。同じデータでも、調和平均は算術平均よりも小さい値になるのがポイントです。
HARMEAN関数にできることをまとめると、次のとおりです。
- 速度の平均など「率」の平均を正しく求められる
- 1個あたりの単価の平均を正確に計算できる
- AVERAGE関数では過大評価になるケースを防げる
- 機械学習で使うF値(適合率と再現率の調和平均)を求められる
- GEOMEAN関数(幾何平均)と使い分けることで、データに合った正しい平均が選べる
NOTE
HARMEAN関数はGoogleスプレッドシートのすべてのバージョンで利用できます。ExcelのHARMEAN関数とも互換性があるので、Excelで使っていた数式をそのままスプレッドシートに持ち込んでも問題なく動きますよ。
調和平均が「正しい平均」になる場面とは
「平均」と聞くと、つい合計を個数で割る算術平均をイメージしますが、世の中には算術平均では正しく計算できないデータが存在します。代表的なのが、「単位あたりの量(率)」を持つデータです。
たとえば、
- 速度(km / h)= 距離 ÷ 時間
- 単価(円 / 個)= 金額 ÷ 個数
- 燃費(km / L)= 距離 ÷ 燃料
これらは「分母が同じとき」に算術平均で問題なく扱えますが、分母が異なる場合に算術平均を取ると数値が歪んでしまいます。こういった「率」のデータには、調和平均の方が適しているのです。
HARMEAN関数の書き方(構文と引数)
基本構文
=HARMEAN(値1, [値2, ...])
引数には、調和平均を求めたい数値やセル範囲を指定します。最低でも 1 つの引数が必要ですが、実務ではセル範囲をまとめて渡すパターンが圧倒的に多いです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値1 | 必須 | 数値、またはセル範囲。1つ目の値です |
| 値2, … | 任意 | 追加の数値またはセル範囲。最大255個まで指定可能です |
引数に関するルールをもう少し詳しく見ていきましょう。
- 引数はすべて正の数である必要があります。0や負の数を含むと
#NUM!エラーになります - セル範囲に含まれるテキストや論理値(TRUE/FALSE)は自動的に無視されます
- 一方で、引数に直接テキストや論理値を書くと
#VALUE!エラーになります - 空白セルは計算から除外されます(0として扱われない点に注意)
NOTE
「0は除外される」と勘違いされやすいですが、0が含まれているとエラーになります。データに0が混ざっている可能性があるときは、後述の
IFERRORやFILTERを使った対処法を試してみてください。
HARMEAN関数の基本的な使い方
まずはシンプルな例から見てみましょう。2つの数値の調和平均を求めます。
=HARMEAN(40, 60)
結果は 48 です。計算の流れは次のとおりです。
- 各値の逆数を求める: 1/40 = 0.025、1/60 ≒ 0.0167
- 逆数の合計を求める: 0.025 + 0.0167 ≒ 0.0417
- 個数で割る: 0.0417 / 2 ≒ 0.0208
- その逆数を取る: 1 / 0.0208 ≒ 48
「逆数の平均の逆数」と覚えるとシンプルです。
セル範囲を指定するパターン
実務でよく使うのはセル範囲を指定するパターンです。たとえば B2 から B10 までに速度データを入れているとき、
=HARMEAN(B2:B10)
と書けば、9件分の調和平均が一発で返ります。データ件数が増えても数式を変える必要がないので、テーブルや表との相性が抜群です。
複数の範囲・値を組み合わせる
複数のセル範囲や数値を混ぜて指定することもできます。
=HARMEAN(B2:B5, C2:C5, 80)
このように書くと、B列とC列の値、それに数値 80 を合わせた全体の調和平均が計算されます。「別シートにあるデータと、固定で追加したい値を一緒に平均したい」というときに便利です。
実務で役立つHARMEAN関数の活用例
ここからは、HARMEAN関数が実際に役立つ場面を 4 つ紹介します。「単純な平均ではダメで、調和平均を使うとぴったり合う」ケースを順番に見ていきましょう。
活用例1: 速度の平均を求める
調和平均の代表的な使い方が「速度の平均」です。
たとえば、営業担当の方が客先への往復で次の速度だったとします。
| 区間 | 速度 |
|---|---|
| 行き | 40 km/h |
| 帰り | 60 km/h |
AVERAGE関数で計算すると (40+60)/2 = 50 km/h になりますが、これは正しくありません。
実際の平均速度を考えてみましょう。片道の距離を D km とすると、行きは D/40 時間、帰りは D/60 時間かかります。往復 2D km を合計時間で割ると次のようになります。
2D / (D/40 + D/60) = 2D / (5D/120) = 48 km/h
HARMEAN関数なら、この複雑な計算を一発で正解にしてくれます。
=HARMEAN(40, 60) → 48
AVERAGE だと 50 km/h になるところ、正しくは 48 km/h です。同じ距離を異なる速度で移動するときは、必ず調和平均を使いましょう。
NOTE
「同じ距離」がポイントです。もし「同じ時間ずつ走った」場合は、AVERAGEで平均速度を出してOKです。データの性質によって正しい平均関数が変わる、というのは覚えておくと役立ちます。
活用例2: 単価の平均を求める
もうひとつ実務でよくあるのが「単価の平均」です。
たとえば、同じ予算 1 万円で A 店と B 店から商品を仕入れたとします。
| 仕入先 | 単価 | 購入数量 |
|---|---|---|
| A店 | 100円 | 100個 |
| B店 | 200円 | 50個 |
単価を AVERAGE で計算すると (100+200)/2 = 150円 です。でも実際の平均単価は、合計 2 万円で 150 個買ったので 20,000 / 150 ≒ 133円 ですよね。
HARMEAN 関数で計算すると、正解の 133.3 円が一発で出てきます。
=HARMEAN(100, 200) → 約133.3
同じ金額を異なる単価で購入するときは、調和平均が正しい平均単価になります。逆に、「同じ個数だけ買って単価が違う」ケースでは AVERAGE のほうが正しいので注意してくださいね。
活用例3: F値(F1スコア)を計算する
少しテクニカルですが、機械学習や検索評価でよく使われる F値(F1スコア) も、調和平均そのものです。
F値は「適合率(Precision)」と「再現率(Recall)」のバランスを表す指標で、定義は次のとおりです。
F値 = 2 × Precision × Recall / (Precision + Recall)
これは、Precision と Recall の調和平均と一致します。スプレッドシートで管理しているなら、HARMEAN 関数で簡単に求められます。
=HARMEAN(B2, C2)
B2 に Precision、C2 に Recall を入れておけば、F値(F1スコア)が一発で計算されます。AVERAGE で平均すると「片方だけ極端に高くてもまずまずの値になる」ため指標として甘くなりますが、HARMEAN はバランスが悪いと値も低くなるので、評価指標として向いているのです。
活用例4: 並列に動く2つの作業の平均処理速度
「ライン A は 1 時間で 60 個、ライン B は 1 時間で 40 個」のように、並列で動いている2つの作業のスループット平均を考えるときも、調和平均がしっくりきます。
たとえば「同じ仕事量を分担で進めるとき、平均的な作業速度はどれくらいか」を見たい場合、AVERAGE だと過大評価になります。
=HARMEAN(60, 40) → 48
これにより、「平均すると 1 時間あたり 48 個ペース」と言うのが直感に合います。製造ラインの能力評価、サーバーのスループット見積もり、コールセンターの処理速度比較などで使い道があります。
HARMEAN関数を応用する:他の関数と組み合わせる
ここでは、現場でよくある「データが綺麗じゃない」状況での応用パターンを紹介します。
0や空欄を含むデータを安全に平均する
データに 0 が混じっている場合、そのまま =HARMEAN(B2:B10) を書くと #NUM! エラーになります。0 を除外して計算したいときは、FILTER 関数と組み合わせるのがおすすめです。
=HARMEAN(FILTER(B2:B10, B2:B10>0))
FILTER で「0より大きい値」だけを取り出し、それを HARMEAN に渡すというイメージです。マイナス値も含まれている場合に同じ条件式でまとめて除外できます。
エラーをそのまま見せたくないとき
HARMEAN がエラーになったときに、表に「N/A」など分かりやすい値を出したい場合は IFERROR でラップします。
=IFERROR(HARMEAN(B2:B10), "データ不足")
データが空のときや、0以下が混じっているときでも、ユーザーが見るシートでは「データ不足」などと表示できます。レポートや共有資料に向いた書き方です。
条件付きの調和平均を計算する
「カテゴリ別の調和平均を出したい」というシーンもありますよね。たとえば A 列にカテゴリ、B 列に値が入っているとき、「カテゴリ X」の調和平均は次のように書けます。
=HARMEAN(FILTER(B2:B100, A2:A100="X"))
カテゴリごとに値の傾向を比較したいレポートで便利です。AVERAGEIF のような「HARMEANIF」は存在しないので、FILTER + HARMEAN の組み合わせを覚えておくと応用が利きます。
よくあるエラーと対処法
HARMEAN関数で表示されるエラーと、その原因・対処法をまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
#NUM! | 引数に0以下の値がある | データから0や負の数を除外する(FILTER を活用) |
#VALUE! | 引数にテキストを直接指定した | 数値だけを指定する。文字列を含む列はセル参照で渡す |
#DIV/0! | 引数が空(データがない) | セル範囲にデータが入っているか確認する |
#REF! | 削除された範囲を参照している | セル参照を見直して、正しい範囲を指定する |
一番多いのは #NUM! エラーです。調和平均は逆数を使って計算するため、0 が含まれると「1/0」で計算できなくなります。データに 0 が混ざっていないか、まず確認してみてください。
NOTE
「マイナスの値が混じっているのに気付かなかった」というケースもあります。在庫数や売上のように「マイナスはあり得ない」と思い込んでいるデータでも、入力ミスや返品処理でマイナスが入ることがあります。
MIN(B2:B100)で最小値をチェックしておくと安心ですよ。
AVERAGE・GEOMEAN・HARMEANの使い分け
スプレッドシートには 3 種類の平均を求める関数があります。データの性質に合った関数を選ぶことが大切です。
| 関数 | 平均の種類 | 計算方法 | 向いているデータ | 具体例 |
|---|---|---|---|---|
| AVERAGE | 算術平均 | 合計 / 個数 | 足し算で変化するデータ | テストの点数、気温、身長 |
| GEOMEAN | 幾何平均 | 全部掛けてn乗根 | 掛け算で変化するデータ | 成長率、利率、倍率 |
| HARMEAN | 調和平均 | 逆数の平均の逆数 | 率や割合のデータ | 速度、単価、F値 |
迷ったときは、次の判断基準を使ってみてください。
- 「合計」が意味を持つデータ → AVERAGE(テストの合計点、気温の合計など)
- 「掛け算」が意味を持つデータ → GEOMEAN(毎年の成長率を掛け合わせるなど)
- 「逆数の合計」が意味を持つデータ → HARMEAN(速度の逆数=所要時間など)
3つの平均値には次の関係があります。
HARMEAN <= GEOMEAN <= AVERAGE
同じデータなら、調和平均が一番小さく、算術平均が一番大きくなります。「データのばらつきが大きいほど 3 つの差が広がる」ので、平均値が極端に変だなと感じたら、別の平均関数も試してみると感覚的にもズレが分かりますよ。
ばらつきそのものを評価したいときは、平均の周辺で STDEV関数(標本標準偏差)や VAR関数(標本分散)も合わせて押さえておくと、レポートの説得力が一段上がります。
HARMEAN関数を使うときのチェックリスト
最後に、実務でHARMEAN関数を使うときに確認したいポイントをまとめておきます。
- [ ] データに「率」や「単位あたりの量」が含まれているか
- [ ] 「同じ距離」「同じ金額」など、分子側が一定の状況か
- [ ] データに 0 や負の値が含まれていないか
- [ ] テキスト混じりのデータならセル範囲で渡しているか
- [ ] 「平均が直感より大きい」と感じたとき、HARMEANを試したか
このチェックを通せば、AVERAGE で誤った数値をレポートに載せてしまうリスクを大きく減らせます。
HARMEAN関数についてよくある質問(FAQ)
Q1. HARMEAN関数とAVERAGE関数はどう使い分ければよいですか?
「データが率(単位あたりの量)かどうか」で判断します。テストの点数や気温など、足し算で意味が成立するデータは AVERAGE を使ってください。一方、速度(km/h)や単価(円/個)、燃費(km/L)のように、何かを何かで割った値の場合は HARMEAN が正しい平均になります。AVERAGEで計算した値が「直感より大きいな」と感じたら、HARMEANと比較してみるのがおすすめです。
Q2. HARMEAN関数でマイナスや0は使えないのですか?
はい、HARMEAN関数の引数はすべて正の数(0より大きい値)である必要があります。0や負の数が含まれていると #NUM! エラーになります。これは、調和平均が「逆数」を使って計算されるため、1/0 のように計算できないケースを避ける必要があるからです。0や負の値を除外したいときは、=HARMEAN(FILTER(B2:B100, B2:B100>0)) のように FILTER 関数と組み合わせると安全に処理できます。
Q3. HARMEAN関数とGEOMEAN関数の違いは何ですか?
どちらも算術平均(AVERAGE)とは異なる平均ですが、向いているデータが違います。GEOMEAN(幾何平均)は成長率や倍率など、掛け算で変化するデータ向きです。一方、HARMEAN(調和平均)は速度や単価など、逆数で考えたい「率」のデータ向きです。3つの関係は HARMEAN <= GEOMEAN <= AVERAGE で、HARMEAN が常に最も小さい値になります。詳細はGEOMEAN関数の記事もあわせてご覧ください。
Q4. ExcelのHARMEAN関数とスプレッドシートのHARMEAN関数に違いはありますか?
引数のルールや計算方法はほぼ同じです。ExcelもGoogleスプレッドシートも「正の数のみを受け付ける」「テキストや論理値はセル範囲では無視される」という挙動が共通しています。Excelで作った調和平均の数式をスプレッドシートに貼り付けても、そのまま動くケースがほとんどです。
Q5. F値(F1スコア)の計算にHARMEAN関数は使えますか?
はい、使えます。F値は「適合率(Precision)」と「再現率(Recall)」の調和平均なので、=HARMEAN(Precision, Recall) で求めた値と 2 × P × R / (P + R) の計算結果は一致します。スプレッドシートでモデル評価を管理しているなら、=HARMEAN(B2, C2) のように書くだけでF1スコアが算出できて便利です。
まとめ
HARMEAN関数は、速度や単価など「率」のデータの正しい平均を求める関数です。
この記事のポイントをおさらいしましょう。
- HARMEAN関数は
=HARMEAN(値1, 値2, ...)で調和平均を計算できる - 同じ距離を異なる速度で移動するときは、AVERAGE ではなく HARMEAN を使う
- 同じ金額で異なる単価の商品を買うときも、HARMEAN が正しい平均単価になる
- 引数は正の数のみ。0や負の数を含むと
#NUM!エラーになる - 0や空欄を含むデータは
FILTER+HARMEANで安全に処理できる - F値(F1スコア)など機械学習の指標にもそのまま使える
- AVERAGE(算術平均)・GEOMEAN(幾何平均)・HARMEAN(調和平均)は、データの性質で使い分ける
普段は AVERAGE 関数で十分な場面がほとんどですが、速度や単価のような「率」のデータを平均するときは、ぜひ HARMEAN を思い出してみてください。正しい平均値が出せると、レポートやプレゼンの数字の説得力がぐっと上がりますよ。

