ISOMITTED関数 ● LAMBDA関数の引数が省略されているかどうか調べる

[Microsoft 365]

Excelの ISOMITTED(イズ・オミッテッド)関数の使い方を紹介します。

Microsoft 365の新関数であるISOMITTED関数を使用すると、LAMBDA関数で定義した自作関数(ユーザー定義関数)の引数が省略されているかどうかを調べられます。引数を省略した場合の既定値を定義するのに役立ちます。ここでは基礎知識として、省略可能な引数を持つ自作関数をLAMBDA関数で定義する方法と、引数を省略した場合の既定値を定義する方法を紹介します。

スポンサーリンク

書式

LAMBDA関数の引数が省略されているかどうか調べる
=ISOMITTED(引数)

LAMBDA関数で定義した自作関数の[引数]が省略されている場合はTRUE、省略されていない場合はFALSEを返します。通常、LAMBDA関数の中でIF関数と一緒に使用します。

引数

引数 説明
引数 LAMBDA関数で定義した自作関数の引数名(LAMBDA関数の引数[変数]に指定した文字列)を指定する。

ISOMITTED関数の使用には、LAMBDA関数の知識が必要です。LAMBDA関数の使い方は「LAMBDA関数 ● オリジナルの関数を定義する」を参照してください。

LAMBDA関数で省略可能な引数を定義するには

ISOMITTED関数の解説に先立ち、LAMBDA関数で省略可能な引数を定義する方法を紹介しておきます。
そもそもLAMBDA関数は、自作関数を定義する関数です。書式は以下のとおりです。

=LAMBDA(変数1, 変数2, 変数3, …, 計算式)

例えば、次の数式①では3つの数値の積(掛け算の答え)を求める関数が定義されます。3つの引数は省略できません(下記の「メモ」参照)。

数式① | =LAMBDA(x,y,z,x*y*z)

LAMBDA関数の引数[変数]を半角の角カッコ「[ ]」で囲むと、自作関数の引数が省略可能となります。次の数式②では、3つの引数のうち[y]と[z]が省略可能です。

数式② | =LAMBDA(x,[y],[z],x*y*z)

自作関数の引数として3つの数値(セルA2、B2、C3)を指定した場合、図1のように数式①数式②のどちらも「A2*B2*C2」の結果の「24」を返します。

数式① | =LAMBDA(x,y,z,x*y*z)(A2,B2,C3)

数式② | =LAMBDA(x,[y],[z],x*y*z)(A2,B2,C3)

図1 3つの引数をすべて指定した。

自作関数の引数として2つの数値(セルA2、B2)しか指定しなかった場合、図2のように数式①はエラーになりますが、数式②では省略された引数[z]が「0」と見なされて「2×3×0」が計算され、「0」が返されます。

数式① | =LAMBDA(x,y,z,x*y*z)(A2,B2)

数式② | =LAMBDA(x,[y],[z],x*y*z)(A2,B2)

図2 引数[z]の指定を省略した。

メモ

「,」の数を合わせれば引数の指定を省略できる
数式①数式②のどちらの場合も、「,」の数を引数の数に合わせておけば、指定を省略してもエラーになりません。次の式はいずれも引数[z]が「0」と見なされて「0」が返ります。
数式① : =LAMBDA(x,y,z,x*y*z)(A2,B2,)
数式② : =LAMBDA(x,[y],[z],x*y*z)(A2,B2,)

引数が省略された場合の既定値を定義するには

数値計算を行う自作関数で引数を省略すると、省略した引数は「0」として計算されます。また、文字列結合を行う自作関数で引数を省略すると、省略した引数は「""」として扱われます。省略した引数を別の値として扱いたい場合は、IF関数とISOMITTED関数を使用して、引数が省略されているかどうかを判定して条件分岐します。

ここでは、引数[z]が省略されたときに「1」として計算してみましょう。つまり、

  • 引数[z]が省略されている → 「1」として計算
  • 引数[z]が指定されている → 指定された「z」の値で計算

となるように、IF関数で条件分岐します。引数[z]が省略されているかどうかは、ISOMITTED関数で判定します。「ISOMITTED(z)」が「TRUE」であれば、省略されていると判定できます。

図2数式②の「z」の代わりに「IF(ISOMITTED(z),1,z)」を指定すると、引数[z]が省略されたときに「1」として計算されます。

セルD2 | =LAMBDA(x,[y],[z],x*y*IF(ISOMITTED(z),1,z))(A2,B2)

図3 引数[z]が省略された場合に「1」として計算する。「2×3×1」が計算される。

引数[y]が省略されたときも「1」として計算したい場合は、数式を次のようにします。

セルD2 | =LAMBDA(x,[y],[z],x*IF(ISOMITTED(y),1,y)*IF(ISOMITTED(z),1,z))(A2)

図4 引数[y]が省略された場合も「1」として計算する。「2×1×1」が計算される。

スポンサーリンク

関連記事