関数のネスト(入れ子)の使い方としくみ|草野球成績管理表でIF×IFERRORを組み合わせる例で解説

関数の使い方

これまでの回で、IF・IFERRORなど1つずつの関数の動きを見てきました。今回はその応用編として、関数を重ねて使う「ネスト(入れ子)」について、使い方と内部のしくみを解説します。草野球の成績管理表で、打率を表示する式を例に、初心者向けに丁寧に説明します。

関数のネスト(入れ子)とは

📝 ネストの役割(一言でいうと)

ある関数の結果を、そのまま別の関数の引数として使う書き方のことです。1つの関数だけでは表現しきれない処理を、複数の関数を組み合わせて1つの式にまとめたいときに使います。

基本の考え方はこうです。

=外側の関数(内側の関数(さらに内側の関数(…)))

カッコの中にカッコが入っている形で、電卓で計算するときの「括弧の中を先に計算する」という考え方と同じです。

成績管理表での実例:IFとIFERRORを組み合わせて打率を表示する

大阪グーニーズの個人成績シートで、D列に打数、E列に安打が入っているとします。この2つの列から打率を計算してF列に表示したいのですが、そのまま割り算するだけでは困るケースが2つあります。

選手名 打数(D列) 安打(E列) 打率(F列)
SUZUKI 5 2 0.4
NAKATA 0 0
YAMAMOTO (未入力) (未入力)

NAKATAは「試合には出たが打数0」、YAMAMOTOは「そもそもまだ試合に出ていない(欄が空白)」という違う状態です。どちらも表示上は「-」にしたいのですが、原因が違うため、それぞれに対応した関数を組み合わせる必要があります。この2つの状態を1つの式でまとめて処理するのが、次の式です。

✅ 打率を表示する式(F2セルの場合)
=IF(D2="","-",IFERROR(ROUND(E2/D2,3),"-"))

この式は、外側から見るとIF、その中にIFERROR、さらにその中にROUND、さらにその中に割り算(E2/D2)という、4段階の入れ子になっています。

STEP 1
一番内側の計算式だけを単体で入力してみる

いきなり完成形を書こうとせず、まずは「=E2/D2」だけを入力し、正しく割り算されるかを確認します。ネストは内側から組み立てるのが安全です。

STEP 2
内側の式をROUNDで包む

動作確認できたら、その式をまるごとROUNDのカッコの中に入れます。「=ROUND(E2/D2,3)」とし、桁数がそろうか確認します。

STEP 3
さらに外側からIFERRORで包む

「=IFERROR(ROUND(E2/D2,3),”-“)」とし、打数0の行(0除算)で「-」が表示されるか確認します。

STEP 4
最後に外側からIFで包み、閉じ括弧の数を数える

一番外側に「IF(D2=””,”-“, … )」を足して完成です。確定する前に、開いたカッコの数と閉じたカッコの数が一致しているか、必ず数えてからEnterキーを押します。

しくみを理解する:ネストの評価順序

📝 内側から計算し、選ばれなかった枝は計算しない

ネストされた式の基本ルールは「内側(奥)にある関数から先に計算し、その結果を外側の関数に渡す」というものです。今回の式でいえば、E2/D2 → ROUND → IFERROR → IFという順で内側から外側へ計算が進みます。

  • IFだけは少し特別で、条件(D2=””)の結果が決まった時点で、対応する側の引数だけを計算します。今回の例では、D2が空欄の行はIF自体が「真」と判定した時点で処理が止まり、内側のIFERRORやE2/D2は計算されません
  • そのため「未入力(空白)」はIFの段階でせき止められ、「打数0の割り算エラー」はさらに内側まで進んでIFERRORが拾う、という役割分担ができている

よくあるミス:ネスト式でつまずくポイント

⚠️ 原因1:閉じ括弧の数が合わない

ネストが深くなるほど、開き括弧と閉じ括弧の数がどんどん増えていきます。関数を1つ足したら閉じ括弧も1つ増える、と意識しておかないと、最後の1つが足りない・多いといったズレに気づきにくくなります。

⚠️ 原因2:IFとIFERRORの役割を混同する

「空欄かどうかの判定」はIFの役目、「計算の結果エラーになったときの代替」はIFERRORの役目です。この役割分担を意識せず、どちらか一方だけで両方を済ませようとすると、未入力の行と打数0の行を区別できず、意図しない表示になることがあります。

✅ この記事のまとめ
  • ネストとは、ある関数の結果を別の関数の引数として使う書き方
  • 評価は基本的に内側から外側へ進むが、IFは条件が決まった枝だけを計算する特別な性質を持つ
  • ネストが深くなるほど閉じ括弧の数え間違いが起きやすいので、内側から1つずつ動作を確認しながら組み立てるのが安全

次回予告

次回のテーマは「VLOOKUP関数」です。検索範囲の左端列を探し、そこから右方向に指定した列数だけずらして値を返すしくみを、選手マスタから背番号や守備位置を引く例で解説していきます。

▶︎ 次回:VLOOKUP関数の使い方としくみ

コメント

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