累計/累積データの取り扱い

前回データと今回データを連結させる。

f:id:xoblos:20180315171939p:plain

上図のように、今回生成するデータを常に前回生成した最終データの直後に追加出力するという要件は、結構挙げられます。xoBlos は、こういった累計/累積を成す帳票要件に対し、①前回出力結果の抽出、②今回入力データの抽出、③①と②を連結して基本入力データとして 1から生成――の工程を基本としていますので、覚えておきましょう。③部分は、前回記事にて復習してください。

前回データ抽出の懸念

さて、前節までの基本事項を意識すると「それでは前回までに出力されたデータが膨大な量であったら、処理時間に影響が及ぶのではないか。」というご意見が挙げられることでしょう。‥‥もっともではありますが、xoBlos の生成で、データの繰り返しがある場合に設定が必須になるキーワード『行(列)ひな形の左上』の仕様上、どうあっても今回実行分の付け足しのみ――という作りは、通常のやり方では実現不可能なのです。

f:id:xoblos:20180315171947p:plain

生成結果に沿って、上図のような雛形シートを用意するのは適当ですが、次回実行も考慮すると他に何が必要でしょうか。‥‥ 業務を実行して、参照されるデータ件数が常に変動する場合、xoBlos が大事にしている左上~右下を特定するのに、前回の最終データが出力された場所を判断できる印を用意しなければなりません。その場合、常に参照先が固定になる Excel の標準機能『名前定義』が活躍することになりますが‥‥

f:id:xoblos:20180315171957p:plain

前節までに用意した雛形シートの、どの位置へ定義したとしても、ひな形行/列が消える以上、必ず使い続けられない問題に直面します。

‥‥しかし上図、名前定義をひな形行より下にしている後半 2つのケースをじっくり見ていると、共通の何かが言えることになります。それは‥‥「名前定義を置いた行の直前行さえ、毎回残っていれば良いのに!」

f:id:xoblos:20180315172006p:plain

上図、内容だけ素直に注目すると何事かと思われるでしょう。‥‥前節から、今必要としているのは空白一行です。‥‥では、入力データ(.xml)に空のデータが一つあれば、空の行が出せるのではないでしょうか。ダミーの意味で空のブックを制御シートと同じところにセットし、抽出対象としてしまいましょう。列項目は制御シートの設定から「ID」「Desc」と揃えられ、抽出対象のブックは空っぽなので値は Null がどちらとも入ります。

f:id:xoblos:20180315172014p:plain

冒頭とは変わり‥‥今回データと前節の空のデータを連結して、基本入力データとして生成してみましょう。期待する結果は満たせていません(空白行が常に出力されて見栄えが悪くなっています)が、抽出も生成も同じ制御シートで、前回データを一度も取り扱うことなく、累計/累積表を出力することができるようになります!

出力する順序どおりに基本入力ファイルを設定すれば、連結する必要はありません。

f:id:xoblos:20180315172028p:plain