Excelの動的配列、関数と数式

  • これを共有
Michael Brown

Excel 365の計算エンジンの革命的なアップデートにより、配列式はスーパーユーザーだけでなく、誰にとっても非常にわかりやすくなりました。 このチュートリアルでは、新しいExcelダイナミック配列のコンセプトを説明し、ワークシートをより効率的に、より簡単に設定できることを紹介します。

Excelの配列式は、これまで達人や数式の専門家の特権とされてきました。 これは配列式でできる」と言われれば、多くのユーザーはすぐに「え、他に方法があるのでは」と思ってしまうでしょう。

動的配列の導入は待望の変化であり、トリックや癖を排除してシンプルな方法で複数の値を扱うことができるため、すべてのExcelユーザーが理解し、楽しんで作成することができるものである。

    エクセル動的配列

    ダイナミックアレイ はサイズ変更可能な配列で、1つのセルに入力された数式に基づいて自動的に計算し、複数のセルに値を返します。

    30年以上の歴史の中で、Microsoft Excelは多くの変化を遂げてきましたが、変わらないことが1つの数式、1つのセルです。 従来の配列の数式でも、結果を表示したいセルごとに数式を入力する必要がありました。 動的配列では、このルールはもう通用しません。 値の配列を返す数式は、自動的に隣のつまり、ダイナミックアレイの操作は、1つのセルを操作するのと同じように簡単にできるのです。

    例えば、2つの数値群を掛け合わせて、異なるパーセンテージを計算する必要があるとします。

    ダイナミックバージョン以前のExcelでは、以下の数式は、複数のセルに入力し、Ctrl + Shift + Enterキーを押して明示的に配列数式にしない限り、最初のセルに対してのみ機能します。

    =A3:A5*B2:D2

    では、同じ数式をExcel 365で使うとどうなるかというと、1つのセル(ここではB3)に入力してEnterキーを押すと...怒涛のごとく一気に結果が表示されます。

    複数のセルを一つの数式で埋めることを こぼれ話 であり、入力されたセルの範囲はスピルレンジと呼ばれる。

    今回のアップデートは、単にExcelで配列を扱う新しい方法というだけでなく、計算エンジン全体に対する画期的な変更です。 動的配列によって、Excel関数ライブラリに新しい関数が大量に追加され、既存の関数がより速く、より効果的に動作するようになりました。 最終的には、新しい動的配列は、完全に次のようになると考えられます。は、Ctrl + Shift + Enter のショートカットで入力される昔ながらの配列式に置き換わります。

    Excelのダイナミックアレイの利用可能性

    ダイナミックアレイは、2018年のMicrosoft Ignite Conferenceで紹介され、2020年1月にOffice 365の契約者にリリースされました。 現在、次のようなものが利用可能です。 Microsoft 365 サブスクリプション およびExcel 2021を使用しています。

    これらのバージョンでは、動的配列がサポートされています。

    • Excel 365 for Windows
    • Excel 365 for Mac
    • 2021年エクセル
    • Excel 2021 for Mac
    • iPad版エクセル
    • iPhone版エクセル
    • Androidタブレット向けExcel
    • Android端末向けExcel
    • ウェブ用エクセル

    エクセル動的配列関数

    Excel 365では、配列をネイティブに扱い、セル範囲にデータを出力する6つの新関数が導入されました。 この出力は常に動的で、ソースデータに変更が発生すると、結果が自動的に更新されます。 そのため、グループ名が - になりました。 動的配列関数 .

    例えば、重複の排除、ユニークな値の抽出とカウント、空白のフィルタリング、ランダムな整数や小数の生成、昇順・降順でのソートなど、従来は困難とされていた多くのタスクに簡単に対処できるようになりました。

    各機能の簡単な説明と、詳細なチュートリアルへのリンクは以下のとおりです。

    1. UNIQUE - 様々なセルからユニークなアイテムを抽出します。
    2. FILTER - 定義した条件に基づいてデータをフィルタリングします。
    3. SORT - 指定された列でセル範囲をソートします。
    4. SORTBY - セルの範囲を別の範囲または配列でソートします。
    5. RANDARRAY - 乱数の配列を生成します。
    6. SEQUENCE - 連番のリストを生成します。
    7. TEXTSPLIT - 指定されたデリミターで文字列を列や行に分割する。
    8. TOCOL - 配列または範囲を1つの列に変換します。
    9. TOROW - 範囲や配列を1つの行に変換します。
    10. WRAPCOLS - 行または列を、行ごとに指定された値の数に基づいて2次元配列に変換します。
    11. WRAPROWS - 列ごとに指定された値の数に基づいて、行または列を2D配列に再成形します。
    12. TAKE - 配列の先頭または末尾から、指定された数の連続した行または列を取り出します。

    さらに、よく使われるExcelの関数を現代風に置き換えたものが2つあります。これらは正式なグループには入っていませんが、ダイナミックアレイの長所をすべて活かしています。

    XLOOKUP - VLOOKUP、HLOOKUP、LOOKUPの後継で、列と行の両方を検索し、複数の値を返すことができる、より強力なものです。

    XMATCH - MATCH関数の後継としてより汎用性の高い関数で、垂直方向と水平方向の検索を行い、指定された項目の相対位置を返すことができます。

    Excelの動的配列の計算式

    最近の Excel では、動的配列の動作が深く統合され、以下のようにネイティブになっています。 全機能 簡単に言うと、複数の値を返す数式に対して、Excelが自動的にリサイズ可能な範囲を作成し、そこに結果を出力するのです。 この機能により、既存の関数が魔法をかけることができるようになりました。

    以下の例では、新しい動的配列の計算式と、既存の関数に対する動的配列の効果を示しています。

    例1.新しい動的配列機能

    この例は、Excel の動的配列関数を使用することで、より速く、よりシンプルなソリューションを実現できることを示しています。

    ある列から一意な値のリストを抽出するには、従来はこのような複雑なCSE式を使用していました。 ダイナミックExcelでは、必要なのは基本形のUNIQUE式だけです。

    =unique(b2:b10)

    空のセルに数式を入力してEnterキーを押すと、Excelは直ちにリスト内の異なる値をすべて抽出し、数式を入力したセル(ここではD2)から始まるセル範囲に出力します。 ソースデータが変更されると、結果は自動的に再計算され更新されます。

    例2.複数の動的配列関数を1つの式にまとめる

    1つの関数でタスクを達成する方法がない場合は、いくつかの関数を連結してください!例えば、条件に基づいてデータをフィルタリングし、結果をアルファベット順に並べるには、次のようにSORT関数をFILTERに巻き付けます。

    =SORT(FILTER(A2:C13, B2:B13=F1, "検索結果なし"))

    ここで、A2:C13はソースデータ、B2:B13はチェックする値、F1は基準値である。

    例3.新しい動的配列関数と既存の関数の併用

    Excel 365に実装された新しい計算エンジンでは、従来の数式を簡単に配列に変換できるため、新旧の関数を併用することを妨げるものは何もありません。

    例えば、ある範囲にいくつのユニークな値があるかを数えるには、動的配列UNIQUE関数を古き良きCOUNTAにネストします。

    =counta(一意(b2:b10))

    例4.既存関数による動的配列のサポート

    Excel 2016やExcel 2019などの旧バージョンでTRIM関数にセル範囲を指定した場合、最初のセルに対して1つの結果が返されます。

    =TRIM(A2:A6)

    動的なExcelでは、以下のように同じ数式ですべてのセルを処理し、複数の結果を返します。

    例5.複数の値を返すVLOOKUP式

    VLOOKUP関数は、ご存知のように、指定した列のインデックスに基づいて1つの値を返すようになっています。 しかし、Excel 365では、列番号の配列を指定して、複数の列からマッチした値を返すことができます。

    =vlookup(f1, a2:c6, {1,2,3}, false)

    例6.簡単にできるTRANSPOSE式

    以前のバージョンのExcelでは、TRANSPOSE関数の構文に間違いは許されませんでした。 ワークシートのデータを回転させるには、元の列と行を数え、同じ数の空のセルを選択して向きを変え(巨大なワークシートでは気の遠くなる操作!)、選択範囲にTRANSPOSE式を入力して、Ctrl + Shift + Enterで正しく完了する必要がありました。 ふっふーん!」と。

    ダイナミックExcelでは、出力範囲の一番左のセルに数式を入力してEnterキーを押すだけです。

    =transpose(a1:b6)

    完了!

    流出範囲 - 1つの数式、複数のセル

    があります。 スピルレンジ は、動的配列の式が返す値を含むセル範囲です。

    流出範囲の任意のセルを選択すると、その中のすべてが左上のセルの数式で計算されていることを示す青い枠線が表示されます。 最初のセルの数式を削除すると、すべての結果が消えます。

    流出範囲は、Excelユーザーの生活をより簡単にする本当に素晴らしいものです。 これまで、CSEの配列式では、何セルにコピーするかを推測する必要がありました。 今は、最初のセルに式を入力するだけで、あとはExcelに任せておけばよいのです。

    注)他のデータがスピルレンジをブロックしている場合、#SPILLエラーが発生します。 ブロックしているデータを削除すると、エラーは解消されます。

    詳しくは、Excelの流出範囲についてをご覧ください。

    流出範囲の目安(#記号)

    流出範囲を参照するには、範囲内の左上のセルのアドレスの後に、ハッシュタグまたはポンド記号(#)を付けます。

    例えば、A2のRANDARRAY式で生成される乱数の個数を求めるには、COUNTA関数に流出範囲の参照を与える。

    =COUNTA(A2#)です。

    流出範囲の値を足し合わせるには

    =SUM(A2#)です。

    ヒント

    • スピルレンジを素早く参照するには、マウスを使って青いボックス内のすべてのセルを選択するだけで、Excelがスピルレフを作成します。
    • 通常のレンジリファレンスと異なり、スピルレンジリファレンスはダイナミックで、レンジのリサイズに自動的に反応します。
    • 詳しくは、Spill Range Operatorをご覧ください。

      暗黙の交差点と@文字

      動的配列Excelでは、数式言語においてもう一つ大きな変化があります。それは、@文字と呼ばれる あんもくこうさえんざんし .

      Microsoft Excelの場合。 暗黙の了解 は、多くの値を単一の値に減らす数式の動作です。 古いExcelでは、セルには単一の値しか入れられなかったので、それがデフォルトの動作であり、それに対する特別な演算子は必要ありませんでした。

      新しいExcelでは、すべての数式がデフォルトで配列数式とみなされます。 特定の数式で配列の動作を望まない場合は、暗黙の交差演算子を使用して防ぎます。 つまり、数式が1つの値だけを返すようにしたい場合は、関数名の前に@を付けると、従来のExcelの非配列数式と同じように動作するようになるのです。

      実際にどのように動作するかは、以下のスクリーンショットをご覧ください。

      C2では、多くのセルに結果をこぼす動的な配列式があります。

      =UNIQUE(A2:A9)

      E2では、関数の前に暗黙の交点を呼び出す@文字が付けられている。 その結果、最初の一意な値のみが返される。

      =@unique(a2:a9)

      詳しくは、Excelの暗黙の交点をご覧ください。

      Excelダイナミックアレイの利点

      動的配列は、間違いなくここ数年で最高のExcelの機能強化の1つです。 他の新機能と同様に、強い点と弱い点があります。 幸いなことに、新しいExcel動的配列の数式は強い点が圧倒的に多いです。

      よりシンプルに、よりパワフルに

      ダイナミックアレーを使うと、より強力な数式をより簡単に作成することができます。 以下にその例を示します。

      • 独自の価値を抽出する:伝統的な製法
      • ユニークで明確な値を数える:従来の計算式
      • 列をアルファベット順に並べる:従来の計算式

      すべての数式に対応するネイティブ

      ダイナミック Excel では、どの関数が配列をサポートしているかどうかを気にする必要はありません。 計算式が複数の値を返すことができれば、デフォルトでそうなります。 これは、この例で示すように、算術演算やレガシー関数にも適用されます。

      動的配列関数のネスト

      より複雑な課題を解決するために、新しいExcel動的配列関数を組み合わせたり、ここやここにあるような古い関数と一緒に使ったりすることは、自由自在です。

      相対参照と絶対参照はあまり重要ではない

      1つの数式に多くの値」という考え方のおかげで、技術的には数式は1つのセルにしか存在しないため、$記号で範囲をロックする必要はありません。 したがって、ほとんどの場合、絶対、相対、混合のいずれのセル参照を使用するかは重要ではなく(これは経験の浅いユーザーにとって常に混乱の元でした)、動的配列数式はとにかく正しい結果を生成します!

      ダイナミックアレイの限界

      新しいダイナミックアレイは素晴らしいものですが、他の新機能と同様に、いくつかの注意点や考慮すべき点があります。

      結果を通常の方法で並べ替えることができない

      動的配列式で返される流出範囲は、Excelのソート機能を使用してソートすることはできません。 そのような試みは、". 配列の一部を変更することはできません " エラー。 結果を小さいものから大きいものへ、またはその逆に並べるには、現在の数式をSORT関数で囲みます。 たとえば、このように一度にフィルタリングと並べ替えを行うことができます。

      流出範囲内の値を削除することはできません

      同じ理由で、流出範囲内のどの値も削除できません。 配列の一部を変更することはできません。 この動作は予想されたもので、論理的です。 従来のCSE配列式もこのように動作します。

      Excelの表ではサポートされていません

      この機能(バグ?)はかなり予想外でした。 動的配列の数式はExcelのテーブル内からは動作せず、通常の範囲内からのみ動作します。 もし、流出範囲をテーブルに変換しようとするとExcelは変換します。 しかし、結果の代わりに#SPILL!のエラーだけが表示されることになります。

      Excel Power Queryと連動しない

      動的配列式の結果を Power Query に読み込むことができません。 例えば、Power Query を使用して 2 つ以上の流出範囲を結合しようとした場合、これは機能しません。

      ダイナミックアレイと従来のCSEアレイの計算式との比較

      動的配列の導入により、2種類のExcelについて話すことができるようになりました。

      1. ダイナミックエクセル 現在は、Excel 365とExcel 2021のみです。
      2. レガシーエクセル は、Ctrl + Shift + Enter の配列式のみがサポートされている、別名伝統的な、またはダイナミック以前の Excel です。 それは Excel 2019、Excel 2016、Excel 2013 およびそれ以前のバージョンです。

      もちろん、動的配列はCSEの配列式よりあらゆる面で優れており、互換性の観点から従来の配列式も残していますが、今後は新しい配列式の使用を推奨しています。

      ここでは、最も本質的な違いを紹介します。

      • 動的な行列式は、1 つのセルに入力し、通常の Enter キーストロークで完了します。 旧式の行列式を完了するには、Ctrl + Shift + Enter を押す必要があります。
      • 新しい配列数式は、自動的に多くのセルに波及します。 CSEの数式は、複数の結果を返すために、セルの範囲にコピーする必要があります。
      • 動的配列の出力は、ソース範囲のデータが変わると自動的にサイズ変更されます。 CSEの数式は、戻り領域が小さすぎる場合は出力を切り詰め、戻り領域が大きすぎる場合は余分なセルにエラーを返します。
      • 動的配列の数式は、1つのセルで簡単に編集できますが、CSEの数式を変更するには、範囲全体を選択して編集する必要があります。
      • CSE の数式範囲では、行の削除や挿入はできません。まず、既存の数式をすべて削除する必要があります。 動的配列では、行の挿入や削除は問題ではありません。

      後方互換性:レガシーExcelの動的配列

      動的配列式を含むワークブックを古いExcelで開くと、自動的に{波括弧}で囲まれた従来の配列式に変換されます。 新しいExcelでワークシートを再び開くと、波括弧は削除されます。

      レガシーExcelでは、新しい動的配列関数とスピルレンジ参照は、この機能がサポートされていないことを示すために_xlfnが先頭に付きます。 スピルレンジ参照の符号(#)はANCHORARRAY関数に置き換えられます。

      例えば、UNIQUE式は次のように表示されます。 エクセル2013 :

      ほとんどの動的配列式(すべてではありません!)は、何らかの変更を加えるまで、レガシーなExcelで結果を表示し続けます。 数式を編集するとすぐに壊れて、1つまたは複数の#NAME?エラー値が表示されます。

      Excelの動的配列の計算式が機能しない

      関数によっては、間違った構文や無効な引数を使用すると、さまざまなエラーが発生することがあります。 以下に、動的配列式で遭遇する可能性のある、最も一般的な3つのエラーを示します。

      #SPILL!エラー

      動的配列が複数の結果を返すが、何かがスピルレンジをブロックしている場合、#SPILL!エラーが発生する。

      エラーを修正するには、流出範囲内の完全に空白でないセルを消去または削除するだけです。 邪魔になるすべてのセルをすばやく見つけるには、エラーインジケータをクリックし、次に 障害となる細胞を選択する .

      このエラーは、スピルレンジが空でない以外に、いくつかの原因が考えられます。 詳細は、以下を参照してください。

      • Excel #SPILL エラー - 原因と修正方法
      • VLOOKUP、INDEX MATCH、SUMIFで#SPILL!エラーを修正する方法

      #REF!

      ワークブック間の外部参照には制限があるため、動的配列では両方のファイルを開いておく必要があります。 ソースワークブックが閉じている場合は、#REF!エラーが表示されます。

      #NAME?エラー

      古いバージョンのExcelで動的配列関数を使用しようとすると、#NAME?エラーが発生します。 新しい関数は、Excel 365とExcel 2021でのみ使用可能であることを忘れないでください。

      このエラーがサポートされているExcelのバージョンで表示される場合は、問題のあるセルの関数名をもう一度確認してください。 誤って入力されている可能性があります:)。

      以上、Excelで動的配列を使う方法でした。 この素晴らしい新機能を気に入っていただけると幸いです。 とにかく、お読みいただきありがとうございました。また来週のブログでお会いしましょう

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。