Excel 2021 新関数の一覧と概要(Excel 2019からの追加)

Excel 2021で新規に追加された関数

Excel 2021 (Windows版)では、Excel 2019までには存在しなかった複数の新関数が追加されました。これらの関数はMicrosoft 365版のExcelでExcel 2019以降に導入された機能を取り込み、Excel 2021に一括搭載したものです 1。以下では、それら新関数の基本構文、および代表的な使用例についてカテゴリ別にまとめます。

検索・参照系の新関数

Excel 2021では、従来の検索関数 (VLOOKUPやHLOOKUP、MATCHなど)を強化・置換する新たな検索/参照関数としてXLOOKUP関数およびXMATCH関数が追加されました。これらは従来の関数では難しかった柔軟な検索をシンプルな構文で実現します。

XLOOKUP関数

目的・意義: XLOOKUP関数は、指定した値を範囲やテーブルから検索し、対応する結果を返す新しい検索関数です。従来のVLOOKUP/HLOOKUP関数やINDEX+MATCHの組み合わせに代わる柔軟で強力な関数であり、検索方向の制限がなく(左方向への検索も可能)、既定で完全一致検索を行う点が大きな特徴です。これにより、VLOOKUPのように検索列より左側の列を返せない制約や、近似一致/完全一致の指定忘れによる誤動作を避けることができます。Excel 2019にはXLOOKUPは搭載されておらず、Excel 2021で新たに利用可能になりました 2 3 4

基本構文: =XLOOKUP(Lookup_value, Lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) 5

  • lookup_value: 検索する値 (検索キー)。
  • lookup_array: 検索対象となる範囲(検索キーが含まれる範囲)。
  • return_array: 対応する結果を返す範囲 (返したい値が含まれる範囲)。
  • [if_not_found] は見つからない場合の返り値、[match_mode] は一致モード、[search_mode] は検索方向やバイナリ検索指定(省略可)です。

使用例: 例えば、セル B2の値をリスト B5:B14 から探し、見つかった場合に同じ行の C5:C14 から対応する値を返すには次のように使用します (完全一致を既定とするため第4引数以降は省略可) 6

=XLOOKUP(B2, B5:B14, C5:C14)

この式は、まず範囲 B5:B14 でセル B2 の値を探し、見つかった行に対応する C5:C14 の値を返します。VLOOKUPでは実現できなかった左側への検索や複数列の一度の返却 (return_arrayに複数列を指定)もXLOOKUPで可能です 7

XMATCH関数

目的・意義: XMATCH関数は、MATCH関数を拡張した新しい検索関数で、指定した値が範囲の何番目に存在するかの位置を返します 8。従来のMATCH関数の「強化版」 (MATCHの強力な後継 9)であり、デフォルトで完全一致検索を行う点や、検索方向の指定、近似一致 (次小または次大)の指定、ワイルドカード検索のサポートなど、XLOOKUPと共通する高度な機能を備えています 10。XMATCH単体で位置を返す用途だけでなく、INDEX関数と組み合わせて値を取り出すことで、VLOOKUPを置き換える柔軟な検索処理も可能です。

基本構文: =XMATCH(Lookup_value, lookup_array, [match_mode], [search_mode]) 11

  • lookup_value: 検索する値。
  • lookup_array: 検索対象の一次元配列 (縦の列か横の行)。
  • [match_mode]: 一致の種類(0:完全一致【既定】 12、-1:以下を次小値まで許容、1:以上を次大値まで許容、2:ワイルドカード一致) から選択 (省略可) 12
  • [search_mode]: 検索モード (1:先頭から順方向検索【既定】、-1:末尾から逆方向検索、2/-2:データ昇順/降順前提の高速バイナリ検索)を指定 (省略可) 13

使用例: たとえば、A4:A13 の範囲において「Jamie Johnson」 という名前 (文字列)が何番目の位置にあるかを調べる場合、=XMATCH("Jamie Johnson", A4:A13) とすることで、その名前が範囲内の5番目の要素であることが返されます 14。この結果を利用して INDEX 関数の行番号に指定すれば、関連する他の列の値(例えば「Jamie Johnson」 に対応する手数料率など) を取得することができます 15

動的配列関連の新関数

Excel 2021では動的配列 (Dynamic Arrays) の概念が導入され、数式が複数の値 (配列)を返すことができるようになりました 16。これに伴い、1つの数式から複数セルにわたる結果が自動的に展開 (スピル) されるようになり、複数の値を扱う新しい関数が追加されています。Excel 2021で新規に追加された動的配列対応の関数は次の6つです 17: FILTER, SORT, SORTBY, UNIQUE, SEQUENCE, RANDARRAY (いずれもExcel 2019には未搭載の関数です)。これらの関数により、複雑な配列計算やデータ操作をシンプルに記述できるようになりました。

FILTER関数

目的・意義: FILTER関数は、指定した条件に基づいて範囲からデータを抽出し、条件を満たす値のみの配列を返します 18。複数の条件にも対応し、フィルタリング結果は元データや条件が変われば動的に更新されます 18。これにより、オートフィルターを使わずに数式だけでデータの絞り込みが可能となり、元のデータセットを変更せず特定のデータだけを取り出して分析するといった用途に威力を発揮します。

基本構文: =FILTER(array, include, [if_empty])

  • array: 抽出元となる範囲または配列。
  • include: TRUE/FALSE の条件を示す配列 (arrayと同じサイズ)を指定し、TRUEの箇所の値が抽出されます。
  • [if_empty]:抽出結果が空(条件に合致しない場合) に返す値を指定(省略可。指定しない場合、結果が空だと #CALC! エラーになります)。

使用例: 例えば、データ範囲 B5:D16 のうち、列Dに「Red」という値を持つ行だけを抽出したい場合、以下のように使用します 19

=FILTER(B5:D16, D5:D16="Red")

この式は、D5:D16 の各値が “Red” であるかをチェックし、該当する行のB5:D16 の内容をすべて返します。その結果、抽出された行が周囲のセルにスピルし、該当データのみの一覧が得られます 18。元データを更新するとFILTER関数の結果も自動更新されます。

SORT関数

目的・意義: SORT関数は、指定した範囲や配列のデータを並べ替えて返す関数です。昇順・降順やキーとなる列(または行)を指定してソートが可能で、結果は動的配列として返されます。元のデータを変更せず、並べ替えた結果だけを別の場所に表示したい場合に便利です。

基本構文: =SORT(array, [sort_index], [sort_order], [by_col])

  • array: 並べ替える対象の範囲または配列。
  • [sort_index]: 並べ替えのキーとする行番号または列番号 (省略時は1番目の行/列がキーとして使用されます)。
  • [sort_order]: 並べ替え順序 (1は昇順、-1は降順。省略可で既定は昇順)。
  • [by_col]: 並べ替え方向の指定 (FALSEまたは省略時は行方向にキーを見て並べ替え (縦方向の並べ替え)、TRUEの場合は列方向 (横方向)に並べ替え)。

使用例: 例えば、B5:C16 の範囲を 「2列目 (C列) の値」をキーに降順ソートするには以下のように指定します 20

=SORT(B5:C16, 2, -1)

この式は、範囲 B5:C16 の2列目 (ここではC列) の値に基づき降順 (-1指定)で並べ替えを行い、その結果を動的配列として返します 20。返された配列は元のデータが変われば自動的に更新され、レポート用にソート済みビューを作る場合などに有用です。

SORTBY関数

目的・意義: SORTBY関数は、対象の範囲そのものには含まれない別のキー値に基づいて並べ替えを行う関数です 21。これにより、結果に含めない列をソートのキーに使ったり、複数のキーで柔軟に並べ替えたりすることができます。

基本構文: =SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2]...)

  • array: 並べ替え対象の範囲または配列。
  • by_array1: 第1キーとなる範囲または配列。
  • [sort_order1]:第1キーの並べ替え順序(省略可、1は昇順、-1は降順)。
  • by_array2, sort_order2…: 第2、第3・・・のキー(省略可。指定する場合は順にキー範囲と順序をペアで渡す)。

使用例: 例えば、B5:C16 の名前リスト (列B)を、別の範囲である C5:C16 のスコア (列Cの値) に基づいてソートするには以下のようにします 21

=SORTBY(B5:C16, C5:C16)

この式は、表示する範囲 B5:C16 のデータを、C5:C16 の値(点数など) に従って並べ替え、ソート結果を返します 21。たとえば列Bに氏名、列Cに得点がある場合、氏名一覧を得点の順に並べ替えるといった用途に使えます。複数のキーを指定すれば、主要キー→副次キーの順でソートすることも可能です。

UNIQUE関数

目的・意義: UNIQUE関数は、指定した範囲や配列から重複しない値を抽出し、一意な値のリスト(配列)を返す関数です 22。大量のデータからユニークなエントリを洗い出したり、カテゴリ一覧を作成したりするのに役立ち、従来は複雑な式やピボットテーブルで対処していた処理をシンプルに実現します。また結果は動的であり、元データが変わればユニークな値リストも自動更新されます。

基本構文: =UNIQUE(array, [by_col], [exactly_once])

  • array: 抽出元の範囲または配列。
  • [by_col]:列単位での重複判定を行うか(省略可。FALSEまたは省略時は行ごとに判定、TRUE時は列ごとに判定)。
  • [exactly_once]: 一度しか出現しない項目のみを返すか(省略可。TRUEにすると一意に1回だけ現れる値のみ返し、FALSEまたは省略時は重複を除外した全ての異なる値を返す)。

使用例: 例えば、範囲 B5:B16 に色名の一覧があり、その中からユニークな色名だけを取得したい場合、以下のように指定します 22

=UNIQUE(B5:B16)

この式は、B5:B16 に含まれる値から重複を除いたユニークな値の一覧を返します。たとえば B5:B16 に Red, Blue, Red, Green, Blue… といったデータがある場合、結果はRed, Blue, Green,… のようなリストになります 22。このユニークな値リストはドロップダウンリストの候補生成などにも利用できます。

SEQUENCE関数

目的・意義: SEQUENCE関数は、連続した数値の配列を生成する関数です 23。指定した行数や列数、開始値、増分に従って、自動的に数値の並び (シーケンス) を作成します。インデックスの配列や日付の連続リストなどを簡単に作ることができ、他の関数と組み合わせて汎用的なシーケンスを供給する用途にも使われます。

基本構文: =SEQUENCE(rows, [columns], [start], [step])

  • rows: 生成する行数。
  • [columns]: 生成する列数(省略可、既定値は1)。
  • [start]:開始値(省略可、既定値は1)。
  • [step]: 増分(省略可、既定値は1)。

使用例: 最も簡単な使用例として、=SEQUENCE(10) とすると1から10までの連続する数値が1列に生成されます 24。さらに、行数・列数や開始値・増分を指定することで、例えば =SEQUENCE(12, 5, 0, 5) のように使うと、0から5刻みで12行×5列の数表を作成できます 25。この例では、0,5,10,… のような値が5列×12行に渡って出力され、12か月分のデータ表や掛け算の九九表を作成するような用途にも応用できます。

RANDARRAY関数

目的・意義: RANDARRAY関数は、指定したサイズの配列に乱数を発生させて返す関数です 26。従来のRAND関数やRANDBETWEEN関数は単一の乱数しか生成できませんでしたが、RANDARRAYを使うと一度に複数の乱数を取得でき、行列サイズや数値の範囲、整数・小数の別まで指定できます。これにより、乱数によるサンプルデータの生成やランダムな並び替え、抽選処理などが容易になりました 26

基本構文: =RANDARRAY([rows], [columns], [min], [max], [whole_number])

  • [rows]: 生成する行数(省略可、既定値は1)。
  • [columns]: 生成する列数(省略可、既定値は1)。
  • [min]: 乱数の下限値(省略可、既定値は0)。
  • [max]: 乱数の上限値(省略可、既定値は1)。
  • [whole_number]: TRUEの場合は整数乱数、FALSEまたは省略時は0以上1未満の小数乱数。

使用例: 例えば、=RANDARRAY(10) とすれば0以上1未満の乱数を10個生成し縦一列に返します。また、5行×3列の範囲に1以上100以下の整数乱数を生成したい場合、=RANDARRAY(5, 3, 1, 100, TRUE) のように指定します 27。後者の例では5×3の行列にランダムな1~100の整数が配置された配列が返されます 27。これら生成された乱数配列は再計算のたびに変わりますが、必要に応じて値の貼り付けで固定することで、テストデータの作成などに利用できます。

LET関数(一時変数)

目的・意義: LET関数は、数式中で一時変数のように名前を定義し、その名前を用いて計算を行うための関数です 28。プログラミング言語における変数の考え方をExcelのネイティブ数式で実現するもので、同じ計算結果を繰り返し使う場合に中間結果に名前を付けて再利用できるため、複雑な式を簡潔かつ効率的に記述できるようになります 28 29。例えば、従来は同じ項目を何度も計算していたような場合でもLET関数で名前を付けておけば一度の計算で済み、冗長な計算の繰り返しを避けられます。Excel 2021で新たに追加されたこの関数により、最大126個の名前/値を一つの式内で定義可能です 30 (定義した名前の範囲はそのLET関数内のみ)。

基本構文: =LET(name1, value1, name2, value2,..., calculation) 31

1つ目の引数 name1 に任意の名前(変数名)、2つ目 value1 にその値や式を指定します。同様に必要なだけ名前と値のペアを続け、最後に各名前を用いた計算式を指定します (この最終の計算結果がLET関数の返り値となります)。

使用例: 例えば、セルA1とA2の合計値を一時変数x、セル B1 と B2 の合計値を一時変数yとして保持し、それらの積を計算する場合、LET関数を用いて次のように記述できます 29

=LET(x, A1+A2, y, B1+B2, x*y)

この式では、まず x = A1+A2 の計算結果と、y = B1+B2 の計算結果をそれぞれ名前付けして保持し、最後にx*y を計算しています 29。結果的には(A1+A2)*(B1+B2) と同じ値を返しますが、LETを使うことで中間計算に名前を与えて式を見通し良く書ける点や、同じ計算を複数回書かずに済む点でメリットがあります。また、LET関数を使った名前は数式内だけで完結するため、従来のように名前の定義機能を使ってブック全体に名前を登録する必要がないという利点もあります 28

最後に補足として、これら新関数はいずれも Excel 2021で新たに利用可能になったもので、Excel 2019には存在しません。例えばXLOOKUPやFILTER関数などはExcel 2016や2019ではサポートされず、Excel 2021やMicrosoft 365のExcelで初めて利用できます 32。これらを活用することで、より効率的で柔軟なデータ操作が可能となります。

コメント