[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)
自作関数の引数として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)
メモ
引数が省略された場合の既定値を定義するには
数値計算を行う自作関数で引数を省略すると、省略した引数は「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)
引数[y]が省略されたときも「1」として計算したい場合は、数式を次のようにします。