テーブル式とは、ワークシート内で明示的なセル参照としてではなく、構造化参照として使用される数式のことです。テーブル式内の構造化参照は、テーブル式の作成時に適用される構文ルールに基づき、スプレッドシート内のテーブル名と列名を組み合わせて作成されます。
例として、あるスプレッドシート内のテーブル式を考えます。
上のテーブル式内の構造化参照要素について、以下に説明します。
要素 | 説明 |
---|---|
テーブル名 |
ヘッダー行や合計行を含まないテーブルデータを参照します。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])"; |