DioDocs for Excel
DioDocs for Excel
テーブル式の設定
機能 > 数式 > テーブル式の設定

テーブル式とは、ワークシート内で明示的なセル参照としてではなく、構造化参照として使用される数式のことです。テーブル式内の構造化参照は、テーブル式の作成時に適用される構文ルールに基づき、スプレッドシート内のテーブル名と列名を組み合わせて作成されます。

例として、あるスプレッドシート内のテーブル式を考えます。

テーブル式

上のテーブル式内の構造化参照要素について、以下に説明します。

要素 説明
テーブル名 ヘッダー行や合計行を含まないテーブルデータを参照します。Table1 などのデフォルトのテーブル名を使用することも、カスタム名に変更して使用することもできます。カスタム名を追加する方法の詳細については、「定義された名前」を参照してください。

例:DeptSales は、このテーブル式内のカスタムテーブル名です。

列指定子 列指定子には、それが表す列の名前を使用します。これは、列ヘッダー行や合計行を含まない列データを参照します。テーブル式内に列指定子を記述する場合は、角かっこ [] 内に記述する必要があります。

例:[SalesAmount] と [ComAmt]

項目指定子 合計行など、テーブルの特定の部分を参照します。

例:[#Totals] および [#Data]

テーブル指定子 構造化参照の外側部分を表します。外部参照はテーブル名に従い、角かっこで囲まれます。

例:[[#Totals],[SalesAmount]] および [[#Data],[ComAmt]]

構造参照 テーブル名で始まり、列指定子で終わる文字列で表されます。

例:DeptSales[[#Totals],[SalesAmount]] および DeptSales[[#Data],[ComAmt]]

参照演算子

DioDocs for Excel では、参照演算子を使用して、テーブル式内の列指定子を結合します。

以下の表に、構造化参照要素および上のテーブル式に対応するセル範囲と共に参照演算子を示します。

演算子 説明
:(コロン)範囲演算子 2 つ以上の隣接する列のすべてのセル。 =DeptSales[[SalesPerson]:[Region]]
,(カンマ)和演算子 2 つ以上の列の和。 =DeptSales[SalesAmount],DeptSales[ComAmt]
(スペース)積演算子 2 つ以上の列の積。 =DeptSales[[SalesPerson]:[SalesAmount]]DeptSales[[Region]:[ComPct]]

特殊項目指定子

特殊項目指定子は、# プリフィックスまたは @ プリフィックスで識別される、テーブル式内の特定の領域を参照します。

DioDocs for Excel は、次の種類の特殊項目指定子をサポートします。

特殊項目指定子 説明
#All 列ヘッダー、データ、合計(ある場合)を含むテーブル全体
#Data データ行のみ
#Headers ヘッダー行のみ
#Totals 合計行のみ。ない場合は null を返します。
#This Row 式と同じ行内のセル
@ 式と同じ行内のセル

スプレッドシートにテーブル式を設定する方法については、次のサンプルコードを参照してください。

C#
コードのコピー
//データを定義します
worksheet.Range["A1:E3"].Value = new object[,]
    {
        {"SalesPerson", "Region",  "SalesAmount", "ComPct", "ComAmt"},
        {"Joe", "North", 260, 0.10, null},
        {"Robert", "South", 660, 0.15, null},
    };

worksheet.Tables.Add(worksheet.Range["A1:E3"], true);
worksheet.Tables[0].Name = "DeptSales";
worksheet.Tables[0].Columns["ComPct"].DataBodyRange.NumberFormat = "0%";

//テーブル範囲内のテーブル式を使用します
worksheet.Tables[0].Columns["ComAmt"].DataBodyRange.Formula = "=[@ComPct]*[@SalesAmount]";

//テーブル範囲外のテーブル式を使用します
worksheet.Range["F2"].Formula = "=SUM(DeptSales[@SalesAmount])";
worksheet.Range["G2"].Formula = "=SUM(DeptSales[[#Data],[SalesAmount]])";
worksheet.Range["H2"].Formula = "=SUM(DeptSales[SalesAmount])";
worksheet.Range["I2"].Formula = "=SUM(DeptSales[@ComPct], DeptSales[@ComAmt])";