配列数式、CSE数式とは、仕組みと使い方はじめに対応:20192016365エクセルの配列数式、CSE数式とは何かを紹介します。セルの範囲とセルの範囲を計算した結果を求められます。条件を指定できない関数に条件を指定できるようになります。配列数式を使いやすくしたスピルが登場しました。詳しくは「スピル、動的配列数式の使い方」をご覧ください。配列数式とは配列数式は通常ではできない高度な計算ができます。必要だったり、配列数式を知らない人には全く理解できないものになっています。使用する際は十分に注意が必要です。Enterキーを入力することから、その頭文字をとって「CSE数式」とも呼ばれます。どちらもセルの範囲に対して計算できるようになります。単一セルの配列数式:計算結果を表示するセルを用意することなく、関数に直接セルの範囲を計算した結果を使用できます。配列数式を使用したいときは主にこちらの使い方だと思います。つの配列数式で、セルの範囲を計算した結果がそれぞれ行ごとの計算した結果になります。これらの動作を解説するために、「配列」と「セルの範囲の計算」を先に説明します。それを理解すると配列数式が理解できるようになります。配列について配列は値の集まりのことです。{1,2,3}のように{}で囲むと配列を入力できます。種類{1,2,3}のように,で要素を区切ると、次のように横並びになっているものを表しています。{1;2;3}のように;で要素を区切ると、次のように縦並びになっているものを表しています。;で要素を区切ると、次のように表形式になっているものを表しています。一般的に二次元配列と呼びます。配列にセル参照や関数や日付は入力できません。入力できる値は文字列、数値、TRUE、FALSE、エラー値などです。{"2000/1/1"}のように文字列としてなら日付を入力できます。3+10}のようにそれぞれの要素に対して計算します。結果は配列で{11,12,13}になります。3+30}のようにそれぞれの要素同士で計算します。結果は配列で{11,22,33}になります。配列同士の計算は、配列の種類と要素数を同じにする必要があります。関数」のように単一の値を引数で受け取る関数に配列を渡せます。LEN("ccc")})のようにそれぞれの要素に対して関数を実行します。結果は配列で{1,2,3}のようになります。関数」のように複数の値を引数で受け取る関数に配列を渡せます。=SUM({1,2,3})は=SUM(1,2,3)と同じ結果になります。関数」など一部の関数は配列を受け取れません。その時はエラーになります。B5+10のようにそれぞれのセルに対して計算します。結果は配列で{11;12;13}のようになります。B5+C5のようにそれぞれのセル同士で計算します。結果は配列で{11;22;33}のようになります。セルの範囲同士の計算は同じ行または同じ列同士で計算する必要があります。(なし)+C6のようになり、行や列がずれている部分では結果がエラーになります。結果は{エラー;22;33;エラー}のようになります。計算結果が配列のようになると上記で説明しましたが、表示については配列と違います。セルの範囲同士の計算と同じで、結果を表示するセルも同じ行または同じ列である必要があります。行や列がずれているとエラーになります。この動作がとても重要なので「セルの範囲の制約」という名前を説明しやすくするために付けます。関数」のように単一の値を引数で受け取る関数に「セルの範囲」を渡せます。LEN(B5)}のようにそれぞれの要素に対して関数を実行します。結果は配列で{1;2;3}のようになります。これは「セルの範囲の制約」を受けます。関数」のように複数の値を引数で受け取る関数に「セルの範囲の計算」を渡せます。SUM(B5+10)})のようにそれぞれの要素に対して関数を実行します。結果は配列で{11;12;13}のようになります。これは「セルの範囲の制約」を受けます。まとめこのようにセルの範囲を計算するとその結果の表示には「セルの範囲の制約」を受けることになります。配列数式を使用すると「セルの範囲の制約」を解除できます。単一セルの配列数式を入力する単一セルの配列数式を使用すると「セルの範囲の制約」を受けることなく、セルの範囲を計算した結果を単一のセルに表示できます。Enterキーで確定します。編集する度に毎回入力する必要があります。成功すると数式バーが{}で囲まれます。なるのかというと、配列数式はセルの範囲を配列に変換しています。セルの範囲の計算から配列の計算になるので「セルの範囲の制約」が無くなります。次のように=B2:B4と入力した後にF9キーを入力すると、セルの範囲が配列になります。この動作を配列数式は内部で行っています。{=SUM(B3:B5*C3:C5)}を展開していくと次のようになります。{=SUM(B3:B5*C3:C5)}=SUM({100;200;300}*{2;3;4})=SUM({200;600;1200})=SUM(200;600;1200)=2000配列数式を使わないで=SUM({100;200;300}*{2;3;4})と入力しても、結果が同じになることがわかると思います。単一セルの配列数式を使うと次のことができるようになります。セルの範囲の計算結果を使用できる。単一の結果を返す関数をセルの範囲に対して使用できる関数に条件を付けられる。詳しくは下記の「使用例」をご覧ください。複数セルの配列数式を入力する複数セルの配列数式は単一セルの配列数式と意味が異なります。セルの範囲を配列に変換しないため「セルの範囲の制約」を受けたままです。入力するには結果を表示するセルを範囲選択します。Enterキーで確定します。編集する度に毎回入力する必要があります。成功すると数式バーが{}で囲まれます。最初に範囲選択した全てのセルで同じ配列数式が入力されます。絶対参照は必要ありません。これは配列数式を使わないでも同じ結果を得ることができます。配列数式にすることで次のようになります。全てのセルで必ず同じ式になる。セルを個別に編集できなくなる。セルの間に行や列を追加できなくなる。配列数式を入力しているセルは保護されます。編集するには同じ配列数式を使用している全てのセルを範囲選択してDeleteキーで削除する必要があります。このように新しいことができるようになるのではなく、セルを保護したり、式を統一する意味で使います。無理をして複数セルの配列数式を使用する必要はありません。単一セルの配列数式の使用例を紹介します。関数」は単一のセルの文字数しか数えられませんが、配列数式を使うとセルの範囲の文字数を数えられます。合計を求めるこれは配列数式を使いません。関数」の引数「順位」に配列を渡して結果を配列にしています。合計を求めるこれは配列数式を使いません。関数」の引数「順位」に配列を渡して結果を配列にしています。関数」には条件を指定できませんが、配列数式を使えば条件を指定できます。条件には比較演算子を使います。分類が「エクセル」の中で最大の値を取得します。確定IF(B3:B7="エクセル"の部分でそれぞれのセルが「エクセル」か判定しています。結果は配列で{TRUE;TRUE;TRUE;FALSE;FALSE}になります。ときはこの範囲の値を取得します。結果は配列で{1;2;3;FALSE;FALSE}になります。IF(B4="エクセル",C4);・・・}のような動作をしています。最終的に=MAX({1;2;3;FALSE;FALSE})になるので条件に一致する最大値を取得できます。