Forguncyマニュアル
配列数式の使用
Forguncyの使い方 > 数式と関数 > 配列数式の使用

ForguncyではExcelの配列数式をサポートしています。

配列数式がどのようなもので、どのようなことができるのかという部分については、Excelの配列数式を解説した資料を参照してください。このページでは、Forguncyで配列数式を使用する場合の例を示します。

なお、Forguncyでは結合セルであっても配列数式を使用することが可能ですが、ExcelやPDFへとエクスポートした場合にはセル結合が自動的に解除されます。これはExcelが結合セルにおける配列数式をサポートしていないことに準じた動作です。

条件に合致した行の中から最大値を算出する

以下のようなデータがリストビューに表示されている場合に、出荷先市区町村が「千代田区」である人の中から最も高い売上を表示する方法を説明します。Forguncyの場合、支社ごとの年齢の最大値は集計フィールドの機能を使用することで表示可能です。しかし、集計対象の全データをリストビューに表示したうえで、特定の出荷先市区町村の最も高い売上だけを表示したい場合には、数式配列を使用します。

  1. 千代田区の年齢の最大値を表示するセルに「=MAX(IF(P3="千代田区",T3,""))」と入力し、Ctrl + Shift + Enterキーを押します。

    配列数式は、数式バー上ではカーリーブラケットで括られたかたちで表示されます。

    数式や関数のパラメーターでリストビューの行テンプレート上の単一セルを指定した場合、それはリストビューのその列全体のセル範囲を指定したことと等価です。上の例で、リストビューではなく通常のセルにデータが一覧表示されていた場合、「=MAX(IF(P3:P13="千代田区",T3:T13,""))」という数式になります。

  2. [ホーム]→[開始(デバッグ)]をクリックし、配列数式が正しく実行されていることを確認します。

配列数式でODATA関数を使用して一覧データを表示する

Forguncyでテーブルのデータをページに一覧表示させる場合、通常はリストビューを使用します。しかし、たとえば使用したい関数のパラメーターがリストビュー上のセルをサポートしていない場合など、リストビューではなく通常セルにテーブルのデータを一覧表示させたい場合があります。このような場合、配列数式でODATA関数を使用することにより、通常セルにテーブルのデータを一覧表示させることができます。

ODATA関数の使い方については、ODataを参照してください。

Categoriesテーブルには以下のようなフィールドが定義され、データが格納されています。

Categoriesテーブルの「CategoryID」、「CategoryName」、「Description」の3つのフィールドの全レコードを、配列数式とODATA関数を使用してページの通常セルに一覧表示させる手順を以下に示します。

  1. ページのB3セルからD12セルの範囲を選択し、数式バーに「=IFERROR(ODATA("Categories"),"")」と入力して、Ctrl + Shift + Enterキーを押します。

  2. 先ほど設定した数式がカーリーブラケット({ })で括られていることを確認します。

    配列数式は、数式バー上ではカーリーブラケットで括られたかたちで表示されます。

  3. [ホーム]→[開始(デバッグ)]をクリックし、配列数式が正しく実行されていることを確認します。

リストビューのテンプレート行内のセルへの参照(Excelエクスポート/PDFエクスポート)

数式においてリストビューのテンプレート行内のセルを参照した場合、その参照範囲はリストビューのレコード数によって変化します。この動作は配列数式の場合でも同様です。本仕様により、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ページ上の表示結果とは異なることに注意してください。