コンテンツにスキップ

PlaidXLカスタム関数

PlaidXLは、PlaidCloudのデータをセルに直接読み込むExcel関数を追加します。セルに=PLAIDXL.と入力すると、Excelのオートコンプリートに関数が一覧表示され、各引数の簡単な説明が表示されます。

グループ 関数 用途
一覧 LIST_PROJECTS、TABLE.TBL_LIST、TABLE.GET_COLUMNS、DIMENSION.DIM_LIST 構築に使用できるものを確認する
テーブル TABLE.GET_TABLE テーブル全体を範囲に読み込む
階層 DIMENSION.GET_DIMENSION、DRILL ディメンションのノードをレポートの行としてレイアウトする
値 CELL、CELLS ノードの任意の組み合わせについて集計値を計算する
構成要素 REPR.TABLE_REPR、REPR.MEASURE、REPR.MEASURES、REPR.MEASURE_TYPE、REPR.DIMENSION_REPR、REPR.DRILL_KEY CELL、CELLS、DRILLが使用するテーブル、メジャー、集計、ノード、ドリルの深さを記述する

カスタム関数でレポートを作成するでは、これらの関数を組み合わせて使う方法を紹介しています。

  • 最初にサインインします。 関数はPlaidCloudのサインインを使って読み取るため、使用する前にタスクペインからサインインしてください。
  • 選択中のプロジェクトから読み取ります。 すべての関数は、タスクペインで選択したプロジェクトから読み取ります。GET_TABLE、TBL_LIST、DIM_LISTは、選択を変更せずに別のプロジェクトを読み取るための、オプションのプロジェクトIDも受け取ります。選択内容は、開いているすべてのブックで共有されます。
  • 結果は展開されます。 リストやテーブルを返す関数は、その下(または右)のセルに結果を埋めます。結果のための余白を空けておいてください。何かが邪魔をしている場合、Excelには#SPILL!エラーが表示されます。
  • 変更を反映するには再計算します。 PlaidXLの数式は、引数のいずれかが変更されたときに再取得します。PlaidCloudの新しいデータや、タスクペインで選択した別のプロジェクトを反映するには、完全な再計算を強制します。WindowsではCtrl+Alt+F9を押します。Refresh All Tablesが更新するのは取得したテーブルであり、数式ではありません。
  • 正確な名前を使用します。 テーブル名、列名、ディメンション名、ノード名は、PlaidCloudに表示されているとおりに入力してください。

角かっこで囲まれた引数は省略可能です。

=PLAIDXL.LIST_PROJECTS([horizontal])

開くことができるプロジェクトの名前を、名前順に一覧表示します。

  • horizontal — TRUEにすると行方向に一覧表示します。デフォルトはFALSEで、列方向です。

=PLAIDXL.TABLE.TBL_LIST([project_id], [horizontal])

プロジェクト内のテーブルの名前を、名前順に一覧表示します。

  • project_id — 読み取るプロジェクト。デフォルトは、タスクペインで選択したプロジェクトです。
  • horizontal — TRUEにすると行方向に一覧表示します。デフォルトはFALSEで、列方向です。

=PLAIDXL.TABLE.GET_COLUMNS(table_name, [column_filter], [orientation])

選択中のプロジェクトにあるテーブルの列名を一覧表示します。

  • table_name — PlaidCloudでのテーブルの名前。
  • column_filter — "text"などのデータ型。その型の列のみを一覧表示します。省略すると、すべての列を一覧表示します。
  • orientation — 列方向の"vertical"(デフォルト)、または行方向の"horizontal"。

=PLAIDXL.DIMENSION.DIM_LIST([project_id], [horizontal])

プロジェクト内のディメンションの名前を一覧表示します。

  • project_id — 読み取るプロジェクト。デフォルトは、タスクペインで選択したプロジェクトです。
  • horizontal — TRUEにすると行方向に一覧表示します。デフォルトはFALSEで、列方向です。

=PLAIDXL.TABLE.GET_TABLE(table_name, [project_id], [limit])

テーブルの行をヘッダー行付きで返し、数式のセルから展開します。空の値は空白のセルとして返されます。

  • table_name — PlaidCloudでのテーブルの名前。
  • project_id — 読み取るプロジェクト。デフォルトは、タスクペインで選択したプロジェクトです。
  • limit — 返す行数の上限。デフォルトは1,048,575で、ワークシートがヘッダー行の下に保持できる最大数です。

GET_TABLEはすべての列を返します。列を選択したり行をフィルターしたりする場合は、代わりにタスクペインからテーブルを取得してください。

=PLAIDXL.DIMENSION.GET_DIMENSION(dimension_name, start_node, [hierarchy], [orientation], [generation_limit])

start_nodeから始めて、その子孫をたどりながらディメンションのノードをレイアウトします。各世代は親より4スペース多くインデントされ、Excelのアウトライングループで各レベルを折りたたんだり展開したりできます。

  • dimension_name — ディメンションの名前、またはプロジェクト内でのそのパス。
  • start_node — 開始するノード(ディメンションのルートなど)。
  • hierarchy — たどる代替階層。デフォルトは"main"です。
  • orientation — ノードを列方向に一覧表示する"vertical"(デフォルト)、または行方向に一覧表示する"horizontal"。
  • generation_limit — 返す世代数。start_nodeを最初の世代として数えます。2を指定すると、開始ノードとその子が返されます。省略すると、すべての世代を返します。

=PLAIDXL.DRILL(dimension_name, start_node, drill_key, [hierarchy])

start_nodeと、drill_keyが求めるその下のノードを、世代ごとにインデントしてExcelのアウトラインにグループ化し、列方向に返します。

  • dimension_name — ディメンションの名前、またはプロジェクト内でのそのパス。
  • start_node — ドリルの起点となるノード。
  • drill_key — どこまでドリルするか。DRILL_KEYで指定します。すべての子孫、リーフのみ、または指定したレベル数です。
  • hierarchy — たどる代替階層。デフォルトは"main"です。

たとえば、=PLAIDXL.DRILL("Region", "Total", PLAIDXL.REPR.DRILL_KEY("leaves"))は、Totalに続いて、その下にあるすべてのリーフのリージョンを一覧表示します。

リボンのドリルコマンドは、2つのセルに入力したディメンションとノードに対して、数式を書かずに同じ処理を行います。

CELLとCELLSは、1つ以上のディメンションで選択したノードまで集計されたメジャー(テーブルの数値列)を計算します。各呼び出しを、レポート内の1つの交点と考えてください。たとえば、FY2026のEMEAの収益です。

交点は、以下の構成要素関数で記述します。通常は専用のセルに配置し、そのセルを任意の順序でCELLまたはCELLSに渡します。

引数 作成に使用する関数 必須
読み取るテーブル TABLE_REPR ちょうど1つ
集計する列 CELLの場合はMEASURE、CELLSの場合はMEASURESまたは複数のMEASUREセル はい
集計方法 MEASURE_TYPE いいえ — デフォルトはsum
列に対するフィルター DIMENSION_REPR 少なくとも1つ。列ごとに1つ

各フィルターは、テーブルの列と値を指定します。その列がPlaidCloudのディメンションにリンクされている場合、値はノードとなり、フィルターにはディメンションのメイン階層でそのノードに集計されるすべてが含まれます。地理ディメンションにリンクされたRegion列では、ノードEMEAは、その下のすべての国を対象とします。ディメンションにリンクされていない列では、フィルターは値と完全に一致するものを対象とします。

このページの例では、Region列とPeriod列がディメンションにリンクされているテーブルを使用しています。ご自身のテーブルの列名を使用してください。

=PLAIDXL.CELL(table, measure, [measure_type], node, [node], ...)

1つの数値を返します。指定したすべてのノードに該当する行にわたって集計されたメジャーです。

A1 =PLAIDXL.REPR.TABLE_REPR("Sales")
A2 =PLAIDXL.REPR.MEASURE("revenue")
A3 =PLAIDXL.REPR.MEASURE_TYPE("sum")
A4 =PLAIDXL.REPR.DIMENSION_REPR("Region", "EMEA")
A5 =PLAIDXL.REPR.DIMENSION_REPR("Period", "FY2026")
B1 =PLAIDXL.CELL(A1, A2, A3, A4, A5)

B1には、FY2026のEMEAの収益合計が表示されます。

=PLAIDXL.CELLS(table, measures, [measure_type], node, [node], ...)

CELLと同様ですが、複数のメジャーを一度に処理します。指定した順に、メジャーごとに1つの数値を列方向に返します。

D1:F1 revenue | cost | units
D2 =PLAIDXL.REPR.MEASURES(D1:F1)
B2 =PLAIDXL.CELLS(A1, D2#, A3, A4, A5)

D2#は、MEASURESの展開結果全体を渡します。B2:B4には、FY2026のEMEAのrevenue、cost、unitsが表示されます。

これらの関数自体はデータを読み取りません。それぞれが、計算の一部を記述する短いテキストを返し、CELL、CELLS、DRILLに渡せる状態にします。参照するセルに配置しておくと、たとえば期間を変更するだけで、それを使用するすべての数式が更新されます。

=PLAIDXL.REPR.TABLE_REPR(table_name)

CELLとCELLSが読み取るテーブルです。選択中のプロジェクトでの名前で指定します。

=PLAIDXL.REPR.MEASURE(column_name)

CELLが集計する数値列です。

=PLAIDXL.REPR.MEASURES(column_names)

CELLS用の複数のメジャー列です。列名を保持するセルの範囲から指定します。結果は列ごとに1つのセルに展開されます。D2#のように、展開演算子を付けてCELLSに渡します。

=PLAIDXL.REPR.MEASURE_TYPE(agg_function)

メジャーの集計方法です。agg_functionは次のいずれかで、小文字で指定します。

値 返される値
sum 合計(メジャータイプを渡さない場合のデフォルト)
mean 平均
median 中央値
min 最小値
max 最大値
std 標準偏差
var 分散

=PLAIDXL.REPR.DIMENSION_REPR(dimension_name, start_node)

CELLとCELLS用のフィルターです。フィルターする列ごとに1つ渡します。

  • dimension_name — テーブルの列の名前。"Region"のように、ディメンションの値を保持する列です。列名と完全に一致する必要があります。テーブルにない列を指定するとエラーが返されます。
  • start_node — 集計先のノード("EMEA"など)。ディメンションにリンクされていない列では、一致させる値です。

グリッドを作成するには、ノードにセルを参照します。=PLAIDXL.REPR.DIMENSION_REPR("Region", $A7)のようにします。先頭と末尾のスペースは無視されるため、DRILLがレイアウトしたインデント付きのノード名を指すこともできます。

=PLAIDXL.REPR.DRILL_KEY(d_key)

DRILLが開始ノードの下をどこまでたどるかを指定します。d_keyはプレーンテキストです。

d_key ドリルする範囲
"all" すべての子孫
"leaves" リーフのみ — その下に何もないノード
"1 level"、"2 levels"、… その世代数だけ下まで

数値は数字で書きます。"two levels"ではなく"2 levels"です。先頭のdrillは無視されるため、"drill 2 levels"も使用できます。

2レベル以上を指定すると、DRILLは各ノードをその親の直下に並べるのではなく、世代ごとに(すべての子、次にすべての孫の順に)一覧表示します。入れ子のレイアウトにするには、"all"を使用するか、generation_limitを指定したGET_DIMENSIONを使用します。