Excel-Linkでのリンク領域数の削減方法

Excel-Link

質問

Excel-Linkで、シート上に、金額、率、物量などの行(あるいは列)が混在し、行(列)ごとにデータ取得条件(表示単位、有効小数桁、端数処理、符号処理など)が異なるため、リンク領域を多数設定しなければならない。設定すべきリンク領域の数を削減することはできないでしょうか

回答

以下は、金額、率、物量などが行方向に混在するケースを想定して記述しますが、列方向に混在するケースも同様に対応できます

解決策1. リンク領域を重ねるアプローチ

リンク領域は重ねることができ、かつ、行キーや列のキーが指定されていない行や列はスキップされるという仕様を活かして対応するアプローチです:

  1. リンク領域は行ごとに細分化せず、データを取得したい単一のセル範囲に、データ取得条件の違いに応じて「金額領域」「率領域」などのリンク領域を重ねて設定します

  2. 上記各リンク領域は、行キーについて、少なくともひとつ、他のリンク領域と違う列を参照するように設定します。たとえば、行方向に勘定科目が並ぶ場合は、金額用の勘定科目ラベルの列と率用の勘定科目ラベルの列を別に設けます。上述した「金額領域」は前者の列を参照し、「率領域」は後者の列を参照するようにします

  3. 各行に、重ねられたリンク領域のいずれを適用するかを判断し、そのリンク領域用の行キー列だけにキー(上述の例では勘定科目ラベル)を設定します

Excel-Link のデータ取得処理やデータ反映処理では、行キーが空白の行は単にスキップするので、上記の方法によれば、リンク領域の数を抑制しながら、各行を望ましい金額や率に対応づけることができます

解決策2. リンク領域はひとつにして、表示用の行(列)に計算式を設定するアプローチ

売上高などの金額は百万円単位で表示したい一方で、売上台数は千台単位で表示したいとします。この場合、売上台数についてデータ取得行と表示行を設けます。データ取得行にて、金額と同様に100万単位でデータ取得し、表示行では、その値を千で除して、千台単位に直して表示します

Excel-Link のデータ取得処理では、計算式が設定されているセルにはデータを取得しません。また、表示行の行キーを空白にしておけば、解決策1で述べた通り、データ取得処理ではその行はスキップされます

解決策3. 表示用の範囲とは別にリンク領域を設けるアプローチ

金額、率、物量といったデータ取得条件の違いに応じて、リンク領域を分けます。各リンク領域の大きさ(列数と行数)は、表示用の範囲と同じとしておきます。リンク領域のひとつは表示用の範囲と重ねてもかまいませんが、別個としてもかまいません。

表示範囲の各セルには、それぞれの行項目の分類(金額、率、物量)に応じて、適切なリンク領域中の対応する位置にあるセルから値を取得する式を設定します