Excelのブック間のリンクのまとめ

Excelで、他のブックの値を変更したら、同時に値が変更されるようにすることが、比較的簡単にできます。
そのようなリンクを設定していれば同じ集計値を複数の場所に入れる必要がなく、一つのブックの一つのセルだけで管理できるので、間違いが少なくなるし、面倒さもなくなります。

ブック間のリンク

ブック間のリンクは次のような操作でできます。
これは、元ブック.xlsxの元データシートの入力内容です。

このシートのセルC5はSUM関数で合計を求めています。
このセルC5を新規ブックにリンクしてみます。

新規ブックを作成し、任意のセルに=を入力した後、元ブック.xlsxの元データシートを表示させて、セルC5をクリックします。

Enterすれば、結果が求まります。

元ブック.xlsxの元データシートのセルC2の値を100に変更すれば、すべてリンクされて結果も再計算され新規ブックにも150と値になります。

便利ですよね。
しかし、このExcelのブック間リンクはむやみやたらとするとひどい目に遭います。

ブック間のリンクをおススメしない理由

私はブック間の値のリンクをおススメしないと一度宣言しました。
その理由は次の通りです。

元のブックを閉じている最中に、元のブックを他のパソコンで変更した場合、それがリンク先のブックに反映しない

例えばパソコンで元のブックからのリンクをリンク先のブックに付けます。元のブックを音声入力などをするためにスマホで編集するとして、いったん閉じてOneDrive上の元データをスマホで編集しても、その変更はパソコン上のリンク先のブックには反映しません。
パソコンでリンク先のブックを開いたときにはじめて反映します。
つまり、パソコンでリンク先のブックを開くのを忘れた場合、データの齟齬が起きます。

元ブックを移動、削除した場合、リンク元がどこかわからなくなる

実はリンク先は元ブックのファイルの場所を覚えています。
元ブックをOneDriveに保存している場合は閉じるとリンクしている計算式は次のようになります。

=’https://d.docs.live.net/xxxxxxxxx/ドキュメント/[元データ.xlsx]元データ’!$C$5

https://d.docs.live.net/xxxxxxxxx/ドキュメント/がファイルの保存場所です。
OneDrive上でこの場所からファイルを移動してしまうとどこからリンクしたのかわからなくなります。
同様にファイル名を変更してもリンク先がどこかわからなくなります。

リンク先のファイルをメールで送るとリンク元ファイルが参照できなくなる

メールでリンクされたファイルを送ると、参照元のデータは送られていないので、リンクされません。元データファイルを送ったとしても、そのファイルの保存場所が元のリンクした状況と全く同じでなければならず、それを修正するのは大変です。

リンク元と関係なく編集した後にもなぜかリンクの設定が残ってしまう

ブック間のリンクが設定されたファイルを、リンクをすべて無くすように修正し、保存してもどこかにリンク情報が残る場合があります。
セル内の計算式だけではなく、名前、グラフ、図形への数式リンク、条件付き書式、入力規則などもリンク対象になっており、そのどこにリンクが隠れているかすべてをチェックすることは困難です。

リンクがおかしくなったブックを修正する作業自体がとても面倒

リンクの修正を行うことがとても面倒で、どこからリンクされているか、それが根本的にわからなくなっていた場合は修正するにしてもどう修正したらいいかわからないので修正が困難です。

だから気を付けよう

以上のことがブック間リンクでは起きます。
これらをすべて把握しておくのであれば、ブック間リンクはパワーを発揮します。
月ごとの集計ブックがあって、そのデータを取りまとめるのに、名前機能とINDIRECT関数を使えば一つのブックに1年の全データを取りまとめることもできます。
そのためには、ブック間リンクで何が起きるのかを把握しておかなければなりません。

気を付けたい別シートを参照した計算式のコピー

次のようなVLOOKUP関数があります。

=VLOOKUP(A2,元データ!$A$2:$B$4,2,FALSE)

セルA2を、元データシートのA2からB4に入力されている一覧表から探し、2列目のデータを求める、というよくある計算式です。
この計算式を別のブックにコピーすると、次のようになります。

=VLOOKUP(A2,[元データのブック.xlsx]元データ!$A$2:$B$4,2,FALSE)

セルA2を、元データのブック.xlsxブックの元データシートのA2からB4に入力されている一覧表から探し、2列目のデータを求める、となります。
お気づきになりましたでしょうか。
別シートを参照したところが、「元ブックの」というようにブック間リンクになるのです。
くどいようですが、もう少し詳しく解説すると、次のようになります。

=VLOOKUP(A2,元データ!$A$2:$B$4,2,FALSE)

この計算式は、計算式が入力されるシートのセルA2を、同じブックの元データシートのA2からB4に入力されている一覧表から探し、2列目のデータを求めるという表現なのです。

セルA2の部分ですが、計算式が入力されているシートと同じシートのリンクは、コピーしても同じシートのリンクであり、なので特にシート名は入りません。これはブック間でコピーしても変わりません。
元データ!$A$2:$B$4の部分は、同じブック内での操作では、計算式が入力されているシートと別のシートのリンクは、コピーするとあくまでリンク元のシートからのリンクなのでシート名が入ります。
別のブック間のコピーでは、次のように計算式が変わりました。

=VLOOKUP(A2,[元データのブック.xlsx]元データ!$A$2:$B$4,2,FALSE)

計算式が入力されているシートと別のシートのリンクは、コピーするとあくまでリンク元のブック、元シートからのリンクなのでブック名とシート名が入ります。
というより、同じブック内での操作の時点で、ブック名が表示されていないだけで、実際にはブックとしてのリンクになっているのだと思います。
よくある計算式なので、別ブックにコピーすることもあるかもしれませんが、この動作を理解してコピーしないと痛い思いをすることになります。
これは、コピー先ブックにコピー元ブックと全く同じシートがあったとしてもそのシートは参照してくれないのです。

コメント

タイトルとURLをコピーしました