スプレッドシートで「この数値は基準をクリアしているか」を判定したい場面はよくありますよね。テストの合格判定、売上目標の達成チェック、在庫の下限割れ検知など、シーンを挙げ始めるとキリがありません。
そんなときに便利なのが、スプレッドシートのGESTEP関数です。指定した数値がしきい値以上かどうかを、1(以上)か 0(未満)でサクッと返してくれます。IF関数でも同じ判定はできますが、結果を 0 と 1 の数値で受け取れるので、そのまま集計につなげられるのが最大の強みです。
この記事では、スプレッドシートのGESTEP関数の構文から実務での使いどころまで丁寧に解説します。ARRAYFORMULA や SUMPRODUCT との組み合わせ、IF関数 や DELTA関数 との使い分けも、サンプル付きで紹介していきますね。
GESTEP関数とは?スプレッドシートで閾値以上を判定する関数
GESTEP関数は、指定した数値がしきい値以上かどうかを判定する関数です。読み方は「ジーイーステップ」。GE は Greater than or Equal to(〜以上)、STEP は段差や基準を意味します。つまり「基準値以上か」を判定する関数ということですね。
Googleスプレッドシートでは「他のスプレッドシート互換」のエンジニアリング関数として提供されています。Excel の GESTEP関数と同じ仕様で動作するため、Excel経験者にも違和感なく使えますよ。
GESTEP関数の構文と引数
=GESTEP(数値, [しきい値])
| 引数 | 必須 | 内容 |
|---|---|---|
| 数値 | 必須 | しきい値と比較したい数値 |
| しきい値 | 省略可 | 判定の基準となる値。省略時は 0 として扱われる |
引数に文字列を渡すと #VALUE! エラーが返ります。GESTEPは数値専用の関数だと覚えておきましょう。
戻り値(0と1)の意味
戻り値は次の2パターンだけです。
数値 ≧ しきい値のとき → 1数値 < しきい値のとき → 0
ここでのポイントは「以上」の判定だということです。数値としきい値がぴったり同じでも結果は 1 になります。「より大きい」(>)ではないので、境界値を含むかどうかで誤解しないようにしてくださいね。
戻り値が論理値(TRUE/FALSE)ではなく数値(0/1)で返るのも特徴です。SUMPRODUCT や SUM などの集計関数にそのまま投入できるため、判定と集計を一気通貫で扱えます。
GESTEP関数の基本的な使い方
まずは1つの数値としきい値を比較する基本パターンから見ていきましょう。
合格ライン判定の例(70点以上)
テストの点数が 70点以上かどうかを判定してみます。A2セルに点数「85」が入っているとしましょう。B2セルに次の数式を入れます。
=GESTEP(A2, 70)
A2 の 85 は 70 以上なので、結果は 1 が返ります。もし A2 が「65」なら結果は 0 です。
| A列(点数) | B列(=GESTEP(A2,70)) |
|---|---|
| 85 | 1 |
| 65 | 0 |
| 70 | 1 |
| 92 | 1 |
| 68 | 0 |
A列が 70 ぴったりの行でも 1 が返っている点に注目してください。GESTEPは「以上」判定なので、境界値の 70 はクリア扱いになります。
しきい値を省略した場合(正負判定)
GESTEP関数は第2引数を省略できます。省略すると「数値が 0 以上かどうか」の判定になります。
=GESTEP(A2)
A2 が 0 または正の数なら 1、負の数なら 0 が返ります。在庫数がマイナスになっていないかをチェックする場面などに便利ですよ。
=GESTEP(-3) → 0
=GESTEP(0) → 1
=GESTEP(5) → 1
「正負判定の関数を別に覚えなくていい」のは、GESTEPのちょっとした便利ポイントです。
GESTEP関数の実務活用パターン
GESTEP関数の真価は、集計関数や ARRAYFORMULA と組み合わせたときに発揮されます。代表的なパターンを3つ紹介しますね。
SUMPRODUCT+ARRAYFORMULAで達成人数を一発カウント
「各営業担当の月次売上が目標の100万円以上か」を判定して、達成人数を一発で出してみましょう。
| 行 | A列(担当者) | B列(売上) |
|---|---|---|
| 2 | 田中 | 1,200,000 |
| 3 | 鈴木 | 850,000 |
| 4 | 佐藤 | 1,000,000 |
| 5 | 山田 | 1,500,000 |
| 6 | 高橋 | 720,000 |
達成人数を出す数式はこちらです。
=SUMPRODUCT(ARRAYFORMULA(GESTEP(B2:B6, 1000000)))
GESTEP が各行で 1 か 0 を返し、SUMPRODUCT がその合計を計算します。結果は 3 で、5人中3人が目標達成しているとわかります。佐藤さんの売上はちょうど100万円ですが、GESTEPは「以上」判定なのでカウントされますね。
集計関数の使い方はスプレッドシート SUMPRODUCT関数の使い方も参考にしてください。
ARRAYFORMULAで列全体に展開する
C列に判定結果を一気に書き出したい場合は、ARRAYFORMULA で囲みます。
=ARRAYFORMULA(GESTEP(B2:B6, 1000000))
C2 に入れるだけで、C2:C6 にそれぞれの判定結果が展開されます。1行ずつ GESTEP を入力する手間が省けます。これは Excel の GESTEP関数にはない、Googleスプレッドシートならではの使い方です。
ARRAYFORMULA の詳しい仕組みはスプレッドシート ARRAYFORMULA関数の使い方で解説しています。
しきい値をセル参照で動的に切り替える
しきい値を数式に直接書き込むと、変更のたびに修正が必要になります。しきい値を別セル(たとえば F1 セル)に置いておくと、シートをダッシュボード的に使えますよ。
=ARRAYFORMULA(GESTEP(B2:B6, $F$1))
F1 の値を 1,000,000 から 1,500,000 に変更すれば、判定結果が一斉に切り替わります。月次の目標調整や、複数シナリオでの達成率比較に便利なパターンです。
GESTEPとIF・DELTA・COUNTIFの使い分け
GESTEPと似た役割の関数はいくつかあります。「どれを使えばいいの?」という疑問に答える形で整理しておきますね。
| 関数 | 判定内容 | 戻り値 | 向いている場面 |
|---|---|---|---|
| GESTEP | 数値 ≧ しきい値 | 0 / 1(数値) | 0/1のフラグが欲しい・集計に直結したい |
| IF | 任意の条件式 | 任意の値 | 「合格」「不合格」など文字列で返したい |
| DELTA | 数値1 = 数値2 | 0 / 1(数値) | 等値判定(一致件数のカウント) |
| COUNTIF | 範囲内の条件一致件数 | 件数(整数) | 件数だけ知りたい |
IF関数との違い
IF関数でも閾値判定はできます。=IF(A2>=70, 1, 0) と書けば GESTEP と同じ結果になります。違いは数式の長さと戻り値の柔軟性です。
| 観点 | GESTEP | IF |
|---|---|---|
| 数式の長さ | 短い(=GESTEP(A2,70)) | やや長い(=IF(A2>=70,1,0)) |
| 戻り値 | 0 / 1 固定 | 任意の値("合格"・"不合格" など) |
| 集計利用 | そのまま SUM に投入できる | 戻り値が文字列だと集計不可 |
「合格」「不合格」のように文字列を返したいなら IF関数が向いています。詳しい書き方はスプレッドシート IF関数の使い方で解説しています。
DELTA関数との違い
スプレッドシート DELTA関数の使い方では「2つの数値が等しいかどうか」を判定して 0 と 1 を返します。GESTEPは「以上かどうか」の判定です。
| 観点 | GESTEP | DELTA |
|---|---|---|
| 判定内容 | 数値 ≧ しきい値 | 数値1 = 数値2 |
| 用途 | しきい値判定・達成チェック | 等値判定・一致件数カウント |
どちらもエンジニアリング関数で、結果が 0 か 1 で返ってくるのが共通点です。「以上判定なら GESTEP、等値判定なら DELTA」と覚えておくと迷いません。
COUNTIF関数との違い
「目標達成者の人数を知りたい」だけなら、COUNTIF関数のほうがシンプルです。
=COUNTIF(B2:B6, ">=1000000")
GESTEP+SUMPRODUCT との違いは、各行の判定結果(0/1)が残るかどうかです。COUNTIFは件数しか返しません。GESTEPは各行に判定結果を残せるため、後続のフィルターやグラフ作成に流用しやすいです。
詳しい条件指定はスプレッドシート COUNTIF関数の使い方で解説しています。
GESTEP関数のよくあるエラーと対処法
実務でつまずきやすいパターンを3つ紹介します。
#VALUE!エラー(文字列を渡したとき)
引数に文字列を渡すと発生します。たとえば =GESTEP("A", 1) はエラーになります。数値が文字列として入力されているセル(先頭にアポストロフィがあるなど)を参照した場合も同様です。
VALUE関数で数値化してから渡すと解決します。
=GESTEP(VALUE(A2), 70)
#NAME?エラー(スペルミス)
関数名のスペルミスが原因です。「GESTEP」を「GETSTEP」や「GE STEP」と書いていないか確認してください。スプレッドシートでは関数名を入力するとサジェストが表示されるので、そこから選ぶと安心ですよ。
判定が想定と違う(境界値の扱い)
「70点超え」を判定したつもりが、70点ぴったりも 1 でカウントされてしまうことがあります。これは GESTEPが「以上」判定だからです。「より大きい(超え)」を判定したい場合は IF関数を使ってください。
=IF(A2>70, 1, 0)
境界値を含めるかどうかで関数を選び分けるイメージを持っておくと、ミスが減りますよ。
なお、Excel版の挙動についてはExcelのGESTEP関数の使い方もほぼ同じ仕様で解説しています。Excel と Googleスプレッドシートで動作に差はほとんどありません。
まとめ
スプレッドシートのGESTEP関数についてのポイントをおさらいしておきましょう。
- GESTEP関数は「数値 ≧ しきい値」なら 1、そうでなければ 0 を返す
- 第2引数(しきい値)を省略すると 0 と比較される(正負判定に使える)
- 戻り値が数値なので、SUMPRODUCT や ARRAYFORMULA との組み合わせで集計に直結できる
- しきい値をセル参照にすると、ダッシュボード的に判定結果を切り替えられる
- 文字列で返したいなら IF関数、等値判定ならDELTA関数、件数だけ欲しいなら COUNTIF関数を使う
「基準を超えたかどうか」を 0 と 1 のフラグで一発判定したい場面が、GESTEP関数のベストフィットです。テスト合格判定・売上達成チェック・在庫マイナス検知など、活躍の場は意外と多いはずですよ。ぜひ実務で試してみてください。
