テンプレート処理対象シートのレイアウト

テンプレート処理は、同一の処理を、複数のメンバ(あるいはメンバの組)に対して実行する仕組みです。テンプレート処理では以下のような処理を簡単に実現できます:

  • 行数が可変の帳票を [Excel-Link] で作成する(代替案として フォーム の使用もご検討下さい)。

  • fusion_place のデータをもとに複雑な計算を行い、処理結果を元帳に反映する。

  • 複数の 元帳版 のデータ値を比較する帳票を作成する(これはフォームではできません)。

テンプレート処理機能を適用する Excel シートのレイアウトを、下図サンプルを使ってご説明します。

fp excel template processing

テンプレート処理を利用するには、Excel シート上に、「テンプレート範囲 [上図(1)]」を設けます。テンプレート範囲は矩形のセル範囲で、その中に、ひとつまたは複数の リンク領域 を含むことができます。テンプレート範囲に含まれる各セルの式で構成された計算モデルを、「繰り返し条件」で指定された複数のメンバの組について実行するのが、テンプレート処理です。

テンプレート範囲で行われた計算処理の結果は、fusion_place の元帳に書き込むこともできますし、テンプレート範囲と同じシート上に設けた「結果表示範囲 [上図(2)]」に書き出すことも可能です。

以下ではテンプレート処理の設定の上で必要な概念について解説します。

テンプレート範囲

テンプレート範囲は、矩形のセル範囲で、その中に繰り返し実行したい計算処理の内容を定義します。同範囲内にはひとつまたは複数の リンク領域 を含めて、fusion_place アプリケーションのデータを取得することができます。また、Excel の式を用いて、それらのデータや他のセルの値をもとに、計算を行うことができます。計算結果は、反映用の リンク領域 から fusion_place の元帳に書き込むこともできます。

テンプレート範囲は1シートに1つだけ設けることができます。

テンプレート範囲は、「 シート処理要領 」にて指定できます。

繰り返し条件

「繰り返し条件」とは、テンプレート範囲で設定された計算モデルを適用するメンバ(の組)の並びを指定するものです。繰り返し条件は、上図にあらわれていませんが、「 シート処理要領 」にて指定することができます。

もっとも単純な1重の繰り返し条件の場合、特定のディメンションの特定のメンバリストを指定し、あわせて繰り返しキー列 [上図(3)] を指定します。そうすると、そのメンバリストに含まれるメンバのラベルが、順次、テンプレート範囲の横の繰り返しキー列に代入され、テンプレート範囲でデータの取得と計算が行われます。その結果が、結果表示用領域に書き出されたり、また、fusion_place に反映されることもあります(計算結果をどう扱うかは、テンプレート処理に関する指定内容によります)。

同様の繰り返し処理を、複数のディメンションのメンバリストについて行うこともできます(多重の繰り返し処理)。例えば、列 A にディメンション A のメンバリスト AL1 が結び付けられ、それにメンバ a1, a2, a3 が含まれるとします。また、列 B にディメンション B のメンバリスト BL1 が結び付けられ、そこにメンバ b1, b2 が含まれるとします。この場合、最大で6通りのメンバ組み合わせ(a1, a2, a3 と b1, b2 の組み合わせ)が処理対象となります。実際には、「 シート処理要領 」中の「繰り返し条件」の一項目「全組合わせ表示指定セル」の指定に従い、処理対象のメンバ組み合わせは以下のように決定されます:

< 条件 1 >
「全組み合わせ表示指定セル」が..
< 条件 2 >
「全組み合わせ表示指定セル」の値が…​
< 処理対象となるメンバ組み合わせ >

指定されていない

組み合わせ中の各組についてデータの存否が判断されます。その結果、データが存在するメンバ組み合わせが処理対象とされる。

指定されている

論理値「TRUE」あるいは、Excel の計算式中で、真値と解釈される文字列・数値であった場合

メンバリスト中のメンバの全組合わせが処理対象とされる。

(上記以外)

原則として、全組み合わせ表示指定セルが指定されていない場合と同じ。ただし、コントロール領域がひとつも指定されていない場合は、エラーとならず、メンバリスト中のメンバの全組合わせが処理対象とされる。

上図の例では、A 列と B 列が繰り返しキー列であり、A 列が店舗ディメンションに、B 列が商品部門ディメンションに結び付けられています。

繰り返し条件の指定においては、繰り返し対象としたいディメンションごとに、以下の条件を指定します:

項目 必須 指定内容

ディメンション

繰り返し対象とするメンバリストの含まれるディメンション。

指定されたディメンションに対応する繰り返しキーを設定する対象列。
テンプレート範囲と重なってもかまいません。

メンバリスト

繰り返し対象とするメンバを指定するメンバリスト定義。

起点メンバセル

メンバリストが「視点メンバ」を要求するタイプのものである場合のみ必須。メンバリスト定義と合わせて実際のメンバリストを作成する際の起点となる。

多重の繰り返し条件を指定するには、複数のディメンションについて、上記の繰り返し条件を指定します。繰り返し条件には順序があり、最も先に並べた繰り返し条件が、最も外側の(大きな)繰り返しを規定し、以下順次、内側の(小さな)繰り返しを規定します。

結果表示範囲

結果表示範囲には、テンプレート範囲での計算結果が、処理されたメンバ(の組)ごとに上から順に書き出されます。結果表示範囲も、繰り返し条件と同様に、「 シート処理要領 」にて指定することができます。

結果表示は必須ではありません。fusion_place からデータを取得し、何らかの計算を行って、処理結果をまた fusion_place に反映する場合、必ずしも処理結果を逐一表示する必要はないかもしれません(fusion_place のフォームで、検証レポートを作成することもできます)。その場合、結果表示範囲をあえて指定しなければ、結果表示は行われませんが、処理自体は変わりなく実行されます。

結果表示範囲への書き出し順は、繰り返し条件で指定されたメンバリスト内でのメンバの並び順に従います。テンプレート範囲の各セルの値を書き出すとともに、付加的に、テンプレート範囲の数式・書式・入力規則をコピーすることもできます。

結果表示範囲には、データ値に加えて、テンプレート範囲の各セルの以下の属性を書き出すよう指定できます:

  • 数式

  • 書式

  • 入力規則

結果表示範囲は、テンプレート範囲と同じシート上の、テンプレート範囲の下方に設ける必要があります。テンプレート処理の設定時、結果表示範囲については、先頭行のみ指定が必要です。結果表示範囲の開始列・終了列はテンプレート範囲の開始列・終了列に等しく、結果表示範囲の最終行はシートの最終行です。すなわち、テンプレート範囲の下方で結果表示範囲先頭行以降の範囲はすべて結果表示のために使用される可能性があります。他の用途に用いないでください。

結果表示範囲の行数は、Excel シートの最大行数によって制限されます。なお、シートの最大行数を上回ると、最大行数を上回る結果は表示されませんが、処理自体は行われています。すなわち、データ取得・反映処理を実行すると、表示されない行についても処理結果は fusion_place に反映されます。

データ取得処理後、結果表示範囲を含む以下の「名前」が自動設定されます。いずれの名前も、適用範囲は、対象シートです:

Print_Area

印刷対象範囲です。結果表示範囲が設定されます。

_FP_Database

結果表示範囲にその1行上を含めたセル範囲が設定されます。結果表示範囲をもとにピボットテーブルを作成する際などに対象範囲をアドレスではなくこの名前で指定すると、データ取得の都度、ピボットテーブルの対象範囲が自動的に変更されるので便利です。

行キー列の種類

テンプレート範囲内に、ひとつ以上のリンク領域を設けることができます。それぞれのリンク領域の行キー指定列は、テンプレート処理の観点から、以下の3種のいずれかに分類されます。

1. 繰り返しキー列 [上図(3)]

テンプレート範囲と重ならず、かつ、前述の「繰り返し条件」の対象列とされている列です。テンプレート処理においては、テンプレート範囲の各行について、その行と繰り返しキー列の交点であるセルに、特定のディメンションのメンバリストに含まれるひとつのメンバのラベルが代入された上で、テンプレート範囲に含まれる各リンク領域についてデータ取得・データ反映が行われます。これが、メンバリスト中の全メンバについて繰り返されます。

ひとつのリンク領域に、繰り返しキー列は複数あってもかまいません。その場合、各繰り返しキー列は、それぞれ別のディメンションのメンバリストと結び付けられます。すなわち、テンプレート処理では、単一のディメンションのメンバの並びに対して処理を繰り返せるだけでなく、複数のディメンションから採られたメンバの組ごとに処理を繰り返すことも可能です。

テンプレート範囲に複数の行が含まれる場合、そのすべての行に対して同じ繰り返しキー値が適用されます。

2. 固定キー列 [上図(4)]

テンプレート範囲と重ならず、かつ、「繰り返し条件」の対象列とされていない列です。テンプレート処理の開始にあたってテンプレート範囲内がクリアされますが、固定キー列については、その直後の時点の値が、処理全体を通じて、キーとして用いられます。

テンプレート範囲に複数の行が含まれる場合、その各行に対してそれぞれ別の固定キー値を適用することができます。

3. 算出キー列 [上図の例では、該当なし]

テンプレート範囲と重なる行キー列です。算出キー列のキー値はデータ取得の都度、取得値などにもとづいて再計算されます。そしてさらに、再計算されたキーに基づいて、データ取得が行われます。このプロセスは取得されるデータ値が変化しなくなるか、こうした繰り返しプロセスが上限回数(10 回)を越えるまで続けられます。算出キー列を用いると、fusion_place から取得したデータをキーとしてさらにデータを取得したり、あるいは反映することが可能です。

算出キー列を用いれば、例えば、通貨換算のような処理を簡単に実現できます。会社ディメンションの各メンバをもとに、その「通貨」プロパティの値(すなわち通貨コード)を取得し、その通貨コードをキーとして換算レート元帳から換算レートを取得し、別の元帳から取得した現地通貨ベースの会社別勘定科目別金額に乗ずれば、換算後の会社別勘定科目別金額を算出することができます(換算後金額を元帳に書き込むことも出来ます)。テンプレート範囲に複数の行が含まれる場合、その各行に対してそれぞれ別の算出キー値を適用することができます。

コントロール領域とデータ存否の判断

テンプレート範囲に含まれるリンク領域のうち、データの存否の判断に用いられるリンク領域を「コントロール領域」と呼びます。コントロール領域は、以下の条件を満たさねばなりません:

  1. 「領域タイプ」が「データ領域」であること。

  2. データ取得処理の対象であること(すなわち、「処理区分」が「反映のみ」以外であること)

  3. すべての繰り返しキー列が、そのリンク領域の行キー指定列とされていること

  4. そのリンク領域の行キー指定列に、算出キー列が含まれていないこと

  5. そのリンク領域の設定において「テンプレート処理においてデータ有無の判定に関与させない」が OFF であること

この5つの条件をみたす領域が、「コントロール領域」です。テンプレート範囲内にはコントロール領域が少なくともひとつ必要です(複数設けてもかまいません)。

テンプレート処理で繰り返しキー(の組)すべてについて処理を行うとすれば、組の数が膨大となる可能性があります。そこで、テンプレート処理では、「全組み合わせ表示指定セル」の指定に従い繰り返しキー(の組)すべてが処理対象となる場合を除き、繰り返しキー(の組)各々について、データの存否をまず判断します。そのうえで、データの存在する組についてのみ、データ取得・反映処理を行います(繰り返し条件に関する説明もご覧下さい)。データの存否の判断においては、コントロール領域に関するデータ取得条件が用いられます。コントロール領域が複数ある場合には、繰り返しキー(の組)各々について、いずれかのコントロール領域において取得可能なデータが存在する場合のみ、その繰り返しキー(の組)が処理対象となります。判定において、ゼロ値はデータ無しと同一視されます。