エクセルで
関数の中に関数を
入れる(ネスト・入れ子)

この記事は約5分で読むことができます。

2018-07-09

  • キーワード
  • Excel
  • ネスト
  • 入れ子
  • 関数の中に関数
  • 順番
  • 階層
  • 制限

マトリューシカ人形の様に、エクセルで関数の中に関数を入れる方法(ネスト・入れ子)を初心者さんにもわかりやすく解説します。

1.ネスト(入れ子)とは

「関数の中に関数を入れる事」をネストとか入れ子構造といいますが、これは、ロシアの民芸品の"マトリョーシカ人形"に似ています。大きな人形>中位の人形>小さな人形と、人形の中に人形が何重にも重ねられているこの人形にネスト(入れ子)は似ています。 このネスト(入れ子)で複雑な処理が一つのセルで指定できるようになります。初心者が中級者にステップアップするのに必須のテクニックだといえるでしょう。

2.ネスト(入れ子)の指定方法

関数の中に関数を入れる場面が多そうなIF関数でネストの方法を説明しますが、まず、IF関数で判断し、真の場合は空欄、偽の場合は合計を求める場合、以下の様にします。

=IF(条件判断,真の場合,偽の場合))

これを表にして整理すると以下の様になります。

引数 引数の内容処理させたい内容引数に指定する内容
1条件判断A1セルが空欄かどうかを判断するA1=""
2条件が真の場合 空欄と表示させる"空欄"
3条件が偽の場合 A1~A5セルの合計を関数で求めるSUM(A1:A5)

これをIF関数として組み立てすると、以下の様になります。

=IF(A1="","空欄",SUM(A1:A5))

この様に、関数を分解して、引数を考えて行けば、おのずと関数の中に関数を指定する方法が分かります。 関数の中に関数を指定する場合の注意点は、関数の前に=(イコール記号)は不要ということです(今回の場合はIF関数の引数3に指定したSUM関数の前に=(イコール記号)は不要ということです)。

3.ネスト(入れ子)が処理される順番

ネスト(入れ子)が処理される順番は、関数①が処理され、その答えが関数②の引数になり、関数②が処理されます。

=関数②(関数①(引数))

「平均値を求め、その答えを四捨五入する」これをネスト(入れ子)により一つのセル内で計算する場合、以下のように指定します。

この場合の処理の順番は、AVERAGE関数が処理され、その次にROUND関数が処理されます。

=ROUND(AVERAGE(A1:A10),1)

「条件によって処理を変える(A1が空欄なら空欄を返し、空欄以外の場合は合計を計算する)」これをネスト(入れ子)により一つのセル内で計算する場合、以下のように指定します。

=IF(A1="","",SUM(A1:A5))

この様に、ネスト(入れ子)では内側の関数が先に処理され、外側の関数が後で処理されます

4.ネスト(入れ子)の深さの制限はどこまでか

ネスト(入れ子)の深さですが、エクセルのVer.2003までは7階層まで作れましたが、Ver.2007以降は64階層まで作れます。 但し、実際には3階層ぐらいまでなら理解出来ますが、深すぎるとメンテナンス性が悪くなりますので深すぎるのは止めたほうがいいです。

ちなみに私は4階層までネスト(入れ子)で計算式を作ったことがありますが、その時はフローチャートを書いて事前に論理構造を見える化してから、関数に落とし込みました。

5.ネスト(入れ子)の利点と欠点

ネスト(入れ子)により関数の中に関数を入れると、コンパクトなシートにすることが出来ます。 ただ、初心者には敷居が高いので無理にネスト(入れ子)させず、複数のセルに関数を分割して作成するのをおすすめします。 ?

同じカテゴリの記事