C++を使用した動的配列数式の設定

Excelの配列式とは

Excelでは、配列式は個々のセルではなくデータの配列に対して計算を行う特別なタイプの式です。配列式を使用すると、複雑な計算、データの操作、および特定の問題の効率的な解決が可能です。配列式は通常の数式とは異なる方法で入力され、Ctrl + Shift + Enterの使用が必要な場合があります。

Excelの配列式に関するいくつかの重要なポイント:

  1. 構文:
    配列式は通常の式のように書かれますが、値の配列に対する操作を含みます。これらは{ }で囲まれ、これが配列式であることを示します。ただし、これらの{ }は自分で入力する必要はありません。式が正しく入力されると、Excelは自動的にこれらを追加します。
  2. 配列数式の入力:
    配列数式を入力するには、数式バーに数式をタイプします。完了するにはEnterを押すのではなく、Ctrl + Shift + Enterを押します。これにより、Excelはそれが配列数式であることを認識します。正しく入力されると、Excelは数式バーに波括弧で囲まれた数式を表示し、配列数式であることを示します。
  3. 用途:
    配列式は複数のセルや範囲全体での計算を行うのに便利です。高度な数学的な計算、条件演算、データのフィルタリングなどに利用できます。
  4. 利点:
    配列式を使用すると、1つの式で複雑な計算を行うことができ、効率が向上しワークシートが簡素化されます。大規模なデータセットを処理し、複数の中間ステップが必要な計算を行うことができます。
  5. 制限事項:
    配列式は通常の式よりも理解とトラブルシューティングが難しい場合があります。特に大規模なデータセットや複雑な計算と一緒に広範囲に使用されると、ワークシートのパフォーマンスが低下することがあります。
  6. 例:
    範囲内の値の合計: {=SUM(A1:A5*B1:B5)}
    範囲内の最大値の検索: {=MAX(A1:A5+B1:B5)}




    配列式は慎重に使用する必要があり、ワークシートに実装する前にその動作を理解することが重要です。Excelのデータ解析や操作において強力なツールとなります。

Excelダイナミック配列式とは

ダイナミック配列式はExcel 365とExcel 2021で導入された新機能です。これにより、従来の配列式よりもデータの配列をよりシームレスに、効率的に扱うことができます。ダイナミック配列式は自動的に結果を隣接するセルに広げ、Ctrl + Shift + Enterの必要がなく、データの操作が容易になります。

Excelのダイナミック配列式に関するキーポイント:

  1. 自動スピル:
    ダイナミック配列式は出力データのサイズに基づいて自動的に隣接するセルに結果を広げます。つまり、式を入力する前にセルの範囲を選択する必要がないし、Ctrl + Shift + Enterを使って式を確認する必要もありません。
  2. 単一セル入力:
    ダイナミック配列式は1つのセルに入力され、Excelは自動的に隣接するセルに結果を表示します。これにより、式を管理し理解しやすくなり、式を1度だけ入力すれば良いです。
  3. 新しい関数:
    ダイナミック配列式には、FILTERSORTUNIQUESEQUENCESORTBYRANDARRAYなど、配列をネイティブで処理できる新しい関数が導入されています。これらの関数は複数の値を返したり、配列を直接操作することができ、複雑な計算を簡素化します。
  4. 柔軟な範囲処理:
    ダイナミック配列式は、入力データのサイズや実行される計算に基づいて自動的に広がる範囲のサイズを動的に調整します。この柔軟性により、ワークシートスペースの効率的な使用が可能になり、式の作成が簡素化されます。
  5. パフォーマンスの向上:
    ダイナミック配列式は、特に大規模なデータセットや複雑な計算を扱う場合、従来の配列式と比較してパフォーマンスを向上させることができます。
  6. 互換性:
    ダイナミック配列式はExcel 365とExcel 2021で利用可能です。古いバージョンのExcelでサポートされていない場合があります。
  7. 動的配列数式の例:
    FILTER: 特定の条件を満たす値の配列を返します。
    SORT: 範囲または配列内の値を並べ替えます。
    UNIQUE: リストまたは範囲から一意の値を返します。
    SEQUENCE: 数値や日付のシーケンスを生成します。
    RANDARRAY: ランダムな数値の配列を生成します。




    動的配列式は、Excelでデータの操作や分析を強力にサポートし、データの配列を扱い、複雑な計算を効率的に行うことを容易にします。

Excelの配列式と動的配列式の違いとは

Excelでは、配列式と動的配列式の両方を使用して複数の値の計算を同時に行いますが、機能や実装方法において違いがあります。

配列式の特徴

  1. 配列式はExcelの伝統的な式で、データの配列を計算できます。
  2. 式を入力した後、Ctrl + Shift + Enterを押して、Excelに配列式であることを伝えます。
  3. 配列数式は、結果を隣接セルにスピルさせる能力に制限があります。通常、単一の結果を返しますが、その結果はセルの配列かもしれません。
  4. これらは長い間存在し、すべてのExcelのバージョンでサポートされています。

動的配列式の特徴

  1. 動的配列式は、Excel 365(Office 365サブスクリプション)およびExcel 2021で導入された新機能です。
  2. 入力データのサイズや式の計算に基づいて、結果を自動的に隣接するセルに流します。
  3. 動的配列式は、Ctrl + Shift + Enterを押す必要がなく、式を1つのセルに入力すると、Excelが自動的に隣接するセルに結果を入力します。
  4. これらの式は、配列式やCtrl + Shift + Enterなしで直接複数の結果(セルの範囲)を返す能力を持ちます。
  5. FILTERSORTUNIQUEなどの新しい関数を備えており、配列をネイティブで扱い、動的配列形式で結果を返します。
    まとめると、動的配列式は、従来の配列式と比べて、Excelでの配列操作をより現代的で便利な方法で提供し、結果を自動的に流し込んで配列を扱うプロセスを簡略化します。ただし、動的配列をサポートする新しいバージョンのExcelでのみ使用できます。

Excelで動的配列式を設定して計算する方法

Excelで動的配列式を設定するには、データの配列を扱い、結果を自動的に隣接するセルに流すために設計された特定の関数を使用します。

動的配列式の設定手順は次の通りです:

  1. セルを選択:
    動的配列式の結果を表示するセルを選択します。動的配列式は結果を隣接するセルに流し込むため、流し込まれる出力に十分なスペースがあることを確認してください。
  2. 数式を入力:
    選択したセルの式バーに動的配列式を入力します。Excel 365およびExcel 2021で利用可能なFILTERSORTUNIQUESEQUENCESORTBYRANDARRAYなどの動的配列関数のいずれかを使用します。
    たとえば、特定の基準に基づいてデータのリストをフィルタリングするためにFILTER関数を使用することがあります: =FILTER(A2:C15,(A2:A15=F4)*(C2:C15=G4),"")



  3. Enterを押す:
    式を入力したら、キーボードでEnterを押します。従来の配列式とは異なり、Ctrl + Shift + Enterを押す必要はありません。
  4. スピル範囲を観察:
    Excelは、式の結果を隣接するセルに自動的に流します。スパイル範囲は、出力データのサイズや、式によって実行される計算に基づいて、動的に調整されます。Excelは、スパイル範囲を境界線と対角矢印アイコンで強調表示し、スパイルデータを含むことを示します。
  5. スピル範囲とインタラクション:
    Excelの他のセル範囲と同様に、スパイル範囲を操作できます。スパイル範囲を他の式で使用したり、それに計算を行ったり、書式を設定したり、グラフやテーブルで参照したりできます。
  6. 数式を更新:
    動的配列式を変更する必要がある場合は、元のセルで式を編集するだけです。
    編集後、再度Enterキーを押して変更を確認します。必要に応じてExcelは自動的にスパイル範囲を更新します。
  7. スピル範囲のクリア:
    スパイルデータをクリアする場合は、元のセルから式を削除するか、スパイル範囲を直接選択してDeleteキーを押します。Excelはスパイル範囲もクリアします。


    これらの手順に従うことで、Excelで動的配列式を設定して、データ配列を効率的に分析および操作することができます。これにより、データ分析およびレポートタスクが容易になります。

Aspose.Cellsを使用した動的配列式の設定と更新方法

以下のサンプルコードでは、ダミーデータを含むサンプルExcelファイルを読み込みます。ファイルを読み込んだ後、Cell.SetDynamicArrayFormula関数を呼び出し動的配列式を設定し、Workbook.RefreshDynamicArrayFormulas関数で動的配列式を更新します。その後、数式計算を実行し、最後にoutput Excel fileとして保存します。

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Instantiate a Workbook object
    Workbook workbook(u"dynamicArrayFormula.xlsx");

    // Get the first worksheet
    Worksheet ws = workbook.GetWorksheets().Get(0);

    // Getting the F16 
    Cell f16 = ws.GetCells().Get(u"F16");

    // Set dynamic array formula
    FormulaParseOptions formulaParseOptions;
    f16.SetDynamicArrayFormula(u"=FILTER(A2:C15,(A2:A15=F4)*(C2:C15=25),\"\")", formulaParseOptions, false);

    // Refresh the dynamic array formulas
    workbook.RefreshDynamicArrayFormulas(true);

    workbook.CalculateFormula();
    workbook.Save(u"out.xlsx");

    Aspose::Cells::Cleanup();

    return 0;
}

出力スナップショット: