ニュース

「Excel」の新関数「LET」が正式版に ~“変数”を使って可読性と計算速度をアップ

オートコンプリートにも対応

「Excel」の新しい関数「LET」

 米Microsoftは11月16日(現地時間)、「Excel」の新しい関数「LET」を一般公開したと発表した。今年3月から“Office Insider”でテストされていた機能だ。

 「LET」関数は計算結果に名前を割り当て、それを再利用できるようにするもの。同じような処理を何度も記述して数式が長く読みにくくなるのを避けられるほか、計算量の多い処理を何度も繰り返す必要がなくなるためパフォーマンスが向上する。プログラミング言語の“変数”によく似た概念だが、それが利用できる範囲(スコープ)のはその数式の中だけだ。

 「LET」関数の基本的な構文は、以下の通り。

= LET (name1, name_value1, name2, name_value2, ……calculation)
  • name:変数の名前。文字で始まる必要があり、数式の出力や範囲構文と競合してはならない
  • name_value:“name”に割り当てる値
  • calculation:変数を利用した計算。最後の引数はこれでなければならない

 変数は最大126個が利用でき、その数だけ名前と値のペアを引数に指定する。最後の引数は変数を利用した計算式(calculation)である必要があるため、引数の数はかならず奇数個になる(最短の引数は3)。

 たとえば以下の売り上げデータから社員名が“Fred”のものだけを抽出したい場合は以下のようになる。

売り上げデータから社員名が“Fred”のものだけを抽出
LET を利用しない場合:

=IF(ISBLANK(FILTER(A2:D8,A2:A8="Fred")),"-", FILTER(A2:D8,A2:A8="Fred"))

LETを利用した場合:

=LET(filterCriteria,"Fred”,filteredRange,FILTER(A2:D8,A2:A8=filterCriteria),IF(ISBLANK(filteredRange),"-",filteredRange))

 “Fred”や“FILTER(A2:D8,A2:A8=……)”を繰り返し記述する代わりにわかりやすい変数名を付けられるので、あとでフィルタリングの条件を変更する必要が生じても容易に式を再利用できるだろう。計算速度も「LET」関数を利用した方が2倍速いという。

 正式版の「LET」関数では、“name1”“name2”などで宣言した変数を“calculation”引数でオートコンプリートできるようになった。データ参照の競合を防ぐため変数の名前に“.”(ドット)を利用できなくしたり、関数名のローカライゼーションが廃止されたのも、“Office Insider”のフィードバックを取り入れた成果だ。どの言語の「Excel」でも「LET」という名前で関数を利用できる(関数名のローカライズにまつわる「Excel」の問題については、過去記事を参照のこと)。

“name1”“name2”などで宣言した変数を“calculation”引数でオートコンプリート

 「LET」関数は「Office 365」または「Microsoft 365」の「Excel」で利用可能。Webを含めたすべてのプラットフォームの“Current”チャネルで利用できる。デスクトップ版「Excel」の場合は、以下のバージョンへアップデートされていることを確かめよう。

  • Windows: Version 2009 (Build 13231.20262)
  • Mac: Version 16.42 (20101102)