Designer+Excel:「INDIRECT」関数の活用

見た目は複雑でも強い味方

生成の雛形シート上に Excel の関数をいれておくと、値の操作が楽になる場合があります。しかし時として「雛形シート」や「行/列ひな形」「エリアひな形」のような処理後に消えて仕舞う領域上を参照しなければ成らない式も、設定する機会があることでしょう。

f:id:xoblos:20190704134919p:plain

上図は列「A」と列「B」それぞれに、共通でセル「E3」を見る関数が置かれています。列「A」の方はセル番地をシステム値として見ていますが、列「B」の方はセル名で見ています。

INDIRECT 関数はセル番地を文字列で表現出来、その場所が物理的に存在すれば、周囲から行列の増減がどう起きようが、自身の行列が削除されようが、参照を保持します。

f:id:xoblos:20190704134926p:plain

‥‥しかしシステム値が文字列に成って仕舞いますと、オートフィルが使えませんね。少々手を加えます。

f:id:xoblos:20190704134933p:plain

上図の赤字の意味は、「自分自身のセルの行番号と、自分自身のセル位置から 3つ右の列番号の交点であるセル番地を物理的に参照する」という内容になります。‥‥複雑化しましたが、オートフィルの為だけとすると効果が薄いですね。

f:id:xoblos:20190704134940p:plain

xoBlos の雛形の如く、列「E」を削除してみましょう。‥‥列「A」のような、使い慣れているに等しい式の方は壊れて仕舞いました。しかし列「B」の方は参照を保持し、新たに列「E」に入った情報の表現を成立させています。

例えばシートとシート間で跨いで参照している関数を持つ既存資料や、常に出力するデータの直前データを比較参照するような生成要件等に、xoBlos の生成が関わる場合には、このような物理的参照を成す関数が必要になってくる場合があります。相対参照に強い関数(今回例の「ADDRESS」や「OFFSET」等)と組み合わせて、関数の破損(REFエラー)を回避しましょう!

通常関数から INDIRECT 関数の書き換えは、難しいものではありません。結局のところセル番地が REF エラーとなるので、その部分を文字列でカバーして仕舞えば良いのです。

例)
・「=A10」     → 「=INDIRECT("A10")」
・「=SUM(A1:A10)」 → 「=SUM(INDIRECT("A1:A10"))」
・「=IF(雛形シート!A1=出力結果シート!A1,"OK","NG")
         → 「=IF(INDIRECT("雛形シート!A1")=INDIRECT("出力結果シート!A1"),"OK","NG")」

corabo:システムエラーメッセージ

システム管理者には詳細なエラーを!

クライアントマシンの場合、corabo のエラーは下図のように出力されますが‥‥

f:id:xoblos:20190626112322p:plain

サーバマシン――つまり corabo その物が入っているマシンの場合、corabo のエラーは下図のように出力され、詳細の度合いが異なります。

f:id:xoblos:20190626112329p:plain

クライアントユーザは、それこそ xoBlos が全く無縁な方も有り得ます。そのような中、専門的エラーを出力されても仕方がありませんね。上図のとおり、システムレベルのエラーはサーバマシンの方が詳細に出力されますので、原因解明には先ずサーバマシン自身で、クライアントユーザと同じアクションを起こしてみてください。テクニカルサポートチームは、クライアント側のエラーキャプチャを送付頂いても、状況と原因は絶対に掴むことが出来ません‥‥

因みに画像例は、IIS で[C:\ xoBlosFileRoots]というサイト管理フォルダを設定したのにも拘らず、Cドライブ直下にそのようなフォルダが用意されていないということです。

Designer:繰り返し処理の参照項目

参照する項目の制限

手順の繰り返し設定をする際、下図のような設定画面に直面します。『f.読み込む項目』項は、繰り返し基準に相当する XML ファイル内の、値参照する項目を設定しますが‥‥。設定をし忘れて、それでいてその項目の変数をファイルパス等で使用し、エラーが起こって原因の調査に時間が掛かったというお話は、割とあります。

f:id:xoblos:20190610115226p:plain

当項は、実は未設定(空欄)にすると全項目を参照可の扱いにしてくれます。設定のし忘れや、変更対応にも強いですね。

では何故、具体設定が存在するのでしょうか。‥‥上図の下部、当項の詳細をご参照ください。データ件数が少ない内は余り意識されないかもしれませんが、取り扱う項目(列)が一つ増えるだけでどれだけの情報量が増え、処理に負荷が掛かるかということを――。

Designer+xobQuery:重複の取り除き「DISTINCT」

設定内容を持ったファイル

前回記事で、三つ目の繰り返し基準ファイルの作成法をご案内しました。今回は xobQuery での作成法を示しましょう。

こちらは XML to XMLCSV to XML が可能ですので、「一時生成~再抽出」の工程より、手順を一つ節約することが出来ます。‥‥SQL を得意とされている方は、既に承知されていることでしょうね。

●「DISTINCT」は "重複を取り除く" !
 SELECT DISTINCT 一意に出したい項目[, キー項目]‥‥ FROM テーブル

例)
・「-i XML\抽出データ.xml/tbl -o XML\繰り返し基準ファイル.xml -q "SELECT DISTINCT 事業所 FROM tbl"」
・「-i XML\抽出データ.xml/tbl -o XML\繰り返し基準ファイル.xml -q "SELECT DISTINCT 事業所, 部門 FROM tbl"

Designer:xobQuery のヘルプページ

ヘルプページ

xobQuery のヘルプページはこちらになります。インターネットへ接続出来ない方は、製品をインストールした際に、下図の(いずれの方法でも)階層へアクセスするとヘルプページファイルが確認出来ます。

f:id:xoblos:20190423152035p:plain

f:id:xoblos:20190423152040p:plain

業務で使用する際には、下図のように手順種『外部アプリ実行』から『b.実行するファイル(必須)』項に「::\helper\xobQuery.exe」と設定します。これを使用した業務ファイルを corabo で実行する際には、セキュリティ例外設定が必要ですので、お忘れなく!

f:id:xoblos:20190423152047p:plain

Designer:優先的に扱われる共通データとは

設定内容によって変わる

キー値単位での集約データ間のマッチングで、複数のデータが処理対象と成った場合に生成優先されるもの(下図黄塗)を纏めました。

集約(下図右上)以外は、真っ先に対象と成ったデータが優先と覚えておきましょう。

f:id:xoblos:20190422184713p:plain

Designer:重複データを一つにして出力する

集約させる方法は?

「重複データを消したい」‥‥こちらのお問合せを頻繁に頂きます。

しかし xoBlos では、ファイルの削除はあってもデータの削除は機能として存在しません。一方を処理対象外とするか、或いは集約するしかありません。‥‥前者は現実的でありませんね。

f:id:xoblos:20190415144440p:plain

キー項目の値が共通であれば、それを分類や見出しのような集約区分に設定すれば、1つに纏めてくれます。xoBlos で集計処理から学習された場合、何気この考えが抜けている方が多く見受けられます。集計は分類や見出しだけでなく、生成キーワード『加減算』を以てして、実現させているのです。‥‥つまり単純集約の場合は、加算/減算の考えのみ除けば良いというのが、明らかになります。

f:id:xoblos:20190415144445p:plain

共通の値を判別する本となる項目の『区分』を、分類にしてみました。無論、『加減算』は設定していません。期待する生成結果になりましたね。

これにより、繰り返し基準ファイルの作成法には計 3つの手段があるということです。取り扱うデータ件数に応じて、パフォーマンスの良い方法を組み込むようにしましょう。