ForguncyではExcelの配列数式をサポートしています。
配列数式がどのようなもので、どのようなことができるのかという部分については、Excelの配列数式を解説した資料を参照してください。このページでは、Forguncyで配列数式を使用する場合の例を示します。
なお、Forguncyでは結合セルであっても配列数式を使用することが可能ですが、ExcelやPDFへとエクスポートした場合にはセル結合が自動的に解除されます。これはExcelが結合セルにおける配列数式をサポートしていないことに準じた動作です。
以下のようなデータがリストビューに表示されている場合に、出荷先市区町村が「千代田区」である人の中から最も高い売上を表示する方法を説明します。Forguncyの場合、支社ごとの年齢の最大値は集計フィールドの機能を使用することで表示可能です。しかし、集計対象の全データをリストビューに表示したうえで、特定の出荷先市区町村の最も高い売上だけを表示したい場合には、数式配列を使用します。
千代田区の年齢の最大値を表示するセルに「=MAX(IF(P3="千代田区",T3,""))」と入力し、Ctrl + Shift + Enterキーを押します。
配列数式は、数式バー上ではカーリーブラケットで括られたかたちで表示されます。
数式や関数のパラメーターでリストビューの行テンプレート上の単一セルを指定した場合、それはリストビューのその列全体のセル範囲を指定したことと等価です。上の例で、リストビューではなく通常のセルにデータが一覧表示されていた場合、「=MAX(IF(P3:P13="千代田区",T3:T13,""))」という数式になります。
[ホーム]→[開始(デバッグ)]をクリックし、配列数式が正しく実行されていることを確認します。
Forguncyでテーブルのデータをページに一覧表示させる場合、通常はリストビューを使用します。しかし、たとえば使用したい関数のパラメーターがリストビュー上のセルをサポートしていない場合など、リストビューではなく通常セルにテーブルのデータを一覧表示させたい場合があります。このような場合、配列数式でODATA関数を使用することにより、通常セルにテーブルのデータを一覧表示させることができます。
ODATA関数の使い方については、ODataを参照してください。
Categoriesテーブルには以下のようなフィールドが定義され、データが格納されています。
Categoriesテーブルの「CategoryID」、「CategoryName」、「Description」の3つのフィールドの全レコードを、配列数式とODATA関数を使用してページの通常セルに一覧表示させる手順を以下に示します。
ページのB3セルからD12セルの範囲を選択し、数式バーに「=IFERROR(ODATA("Categories"),"")」と入力して、Ctrl + Shift + Enterキーを押します。
先ほど設定した数式がカーリーブラケット({ })で括られていることを確認します。
配列数式は、数式バー上ではカーリーブラケットで括られたかたちで表示されます。
[ホーム]→[開始(デバッグ)]をクリックし、配列数式が正しく実行されていることを確認します。
数式においてリストビューのテンプレート行内のセルを参照した場合、その参照範囲はリストビューのレコード数によって変化します。この動作は配列数式の場合でも同様です。本仕様により、Excelエクスポート/PDFエクスポートの結果は、リストビューのレコード数が1以下の場合と2以上の場合で異なるものとなります。
上の図のようにリストビューのテンプレート行内のセルであるC3を配列数式で「{=C3}」のように指定している場合で説明します。
リストビューのレコード数は3であるため、Excelファイルへのエクスポート結果は「{=$C$3:$C$5}」となり上の図のような結果となります。
しかし、リストビューのレコード数が1の場合、Excelファイルへのエクスポート結果は「{=$C$3:$C$3}」となり上の図のような結果となります。配列数式においてセル範囲が1つのセルのみを返す場合にすべて同じ値となる動作は、Excelの配列数式における仕様です。ForguncyのPDFエクスポートはExcelの仕様に基づいて行われるため、PDFエクスポートでも同様の結果となります。アプリケーション実行時のWebページ上の表示結果とは異なることに注意してください。