これまでの回で、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つの式でまとめて処理するのが、次の式です。
=IF(D2="","-",IFERROR(ROUND(E2/D2,3),"-"))
この式は、外側から見るとIF、その中にIFERROR、さらにその中にROUND、さらにその中に割り算(E2/D2)という、4段階の入れ子になっています。どの処理がどの関数の内側に入っているのか、下の図で確認してみましょう。
いきなり完成形を書こうとせず、まずは「=E2/D2」だけを入力し、正しく割り算されるかを確認します。ネストは内側から組み立てるのが安全です。
動作確認できたら、その式をまるごとROUNDのカッコの中に入れます。「=ROUND(E2/D2,3)」とし、桁数がそろうか確認します。
「=IFERROR(ROUND(E2/D2,3),”-“)」とし、打数0の行(0除算)で「-」が表示されるか確認します。
一番外側に「IF(D2=””,”-“, … )」を足して完成です。確定する前に、開いたカッコの数と閉じたカッコの数が一致しているか、必ず数えてからEnterキーを押します。



コメント