DioDocs for Excel
DioDocs for Excel
動的配列数式
機能 > 数式 > 動的配列数式

動的配列数式は、ワークシートのセル範囲に複数の結果を配列として返す数式です。そのため、1つのセルに入力された1つの数式に基づいた複数の計算結果が、隣接するセルに出力されます。この動作は「スピル」と呼ばれ、結果が表示される範囲は「スピル範囲」と呼ばれます。スピル範囲演算子(#)を使用すると、スピル範囲全体を参照することができます。

DioDocs for Excelでは、IRange.Formula2プロパティを使用して、ワークシートにて動的配列数式を定義できます。また、交差演算子 (@) を自動的に追加せずに数式を指定できます。動的配列数式を使用するには、Formula2プロパティを使用してIRangeオブジェクトの数式を指定する必要があります。

メモ: V5Jにて、AllowDynamicArrayプロパティは廃止となりました。現在、AllowDynamicArrayプロパティはIRange.Formulaプロパティと併用することで、V4JSP2にて動的配列数式を設定することができます。しかし、将来的にAllowDynamicArrayプロパティは削除される可能性があるため、新しいFormula2プロパティを使用することをお勧めします。

また、計算エラーの種類を指定するCalcError列挙体を使用できます。

以下のテーブルに、DioDocs for Excelで使用できる動的配列関数について説明します。

関数 種類 説明
FILTER 検索/行列関数 定義した条件に基づいてデータの範囲をフィルター処理します。
RANDARRAY 数学/三角関数 0から1の間で、ランダムな数値の配列を返します。
SEQUENCE 数学/三角関数 1、2、3、4 など、配列内の連続した数値の一覧を生成します。
SINGLE 検索/行列関数 暗黙的な共通部分と呼ばれるロジックを使用して、単一の値を返します。
SORT 検索/行列関数 範囲または配列の内容を並べ替えます。
SORTBY 検索/行列関数 範囲または配列の内容を、対応する範囲または配列の値に基づいて並べ替えます。
UNIQUE 検索/行列関数 一覧または範囲内の一意の値の一覧を返します。

次のサンプルコードは、動的配列数式を有効にし、条件を指定してFILTER関数を使用する方法を示します。

C#
コードのコピー
//新しいワークブックを作成します
var workbook = new Workbook();

workbook.AllowDynamicArray = true;
var sheet = workbook.Worksheets[0];
sheet.Name = "FILTER";
sheet.Range["A1"].Value = "FILTER 関数を使用すると、指定した条件に基づいてデータの範囲をフィルタできます。構文: FILTER(array,include,[if_empty])";

sheet.Range["B3:E19"].Value = new object[,] {
    { "地域", "営業担当者", "製品", "単位" },
    { "東部", "Tom", "林檎", 6380 },
    { "西部", "Fred", "葡萄", 5619 },
    { "北部 ", "Amy", "梨", 4565 },
    { "南部", "Sal", "バナナ", 5323 },
    { "東部", "Fritz", "林檎", 4394 },
    { "西部", "Sravan", "葡萄", 7195 },
    { "北部 ", "Xi", "梨", 5231 },
    { "南部", "Hector", "バナナ", 2427 },
    { "東部", "Tom", "バナナ", 4213 },
    { "西部", "Fred", "梨", 3239 },
    { "北部 ", "Amy", "葡萄", 6420 },
    { "南部", "Sal", "林檎", 1310 },
    { "東部", "Fritz", "バナナ", 6274 },
    { "西部", "Sravan", "梨", 4894 },
    { "北部 ", "Xi", "葡萄", 7580 },
    { "南部", "Hector", "林檎", 9814 } };

sheet.Range["G3:L4"].Value = new object[,] { { "条件", "", "製品", "単位", "", "合計:" }, { 5000, null, null,null,null,null } };
sheet.Range["I4"].Formula = "=FILTER(D4:E19,E4:E19>G4,\"\")";
sheet.Range["L4"].Formula = "=SUM(IF(E4:E19>G4,1,0))";

sheet.Range["E4:E19,G4,J4:J12"].NumberFormat = "#,##0";
        
//Excelファイルに保存します
workbook.Save("filterfunction.xlsx");

以下の画像は、上記のコードのようにセルI4でフィルタ機能を適用した出力を表示します。

Dynamic Array formula Filter Function

メモ: さらに、DioDocs for Excel は配列および文字列操作関数もサポートしています。 詳細については、関数一覧を参照してください。