クライアントPCにあるファイルより、ネットワーク上のファイルを、VLOOKUP関数で参照していました。
が、ネットワーク上のファイルが消失してしまいました。
しかしながら、VLOOKUP関数において、期待通りの値が得られています。
参照する側のEXCELが、どこかに参照先のテーブルを保持しているのでしょうか?
その場合、テーブルの復元は可能でしょうか?
クライアントPC WinXP
サーバー WinNT4.0
ネットワークデータ ネットワーク接続可能なHDD
です。
お教えいただく際に、その他環境が必要でしたら、コメント欄で
お申し付けくださいませ。よろしくお願いいたします。
Microsoft Excel File Format(Openoffice.orgが解析したもの)によれば、外部ファイル参照の場合は、参照範囲のセル内容がローカルxlsファイル内にキャッシュされるようです。
もちろんすべて読破したわけではないので流し読みですが、
5.10 Internal and External References
に参照に関しての仕様が書かれているようです。外部ファイル参照に関しては、参照ファイル情報(EXTERNSHEET)とともに、キャッシュされた行数(XCT)、キャッシュされたセル内容(CRN;行単位でキャッシュされる)が含まれます。
つまり、テーブルの内容はすべてローカルxlsファイル(VLOOKUP.file)内に保存されているはずですが、それを意図的に取り出す手段は用意されていないのではないかと思います。
上記仕様書にしたがってxlsファイルを手動で解析すれば、テーブルを復元することは不可能ではないでしょうが、途方もない作業ですね...
どのうよな数式を記述しているのでしょうか?
また、手動計算等には なっていないでしょうか?
値を変えてもそれにあう値が取得されるということでしょうか?
VLOOKUP関数で、範囲を指定しますがその範囲の値は、取得できるのでしょうか?
たとえば
VLOOKUP(1,A:D,・・・・
とあった場合、
=A1
とやって表示されるのかなど 確認したらいいでしょう。
taknt様、ありがとうございます。
VLOOKUP関数を使うファイル(以降、VLOOKUP.fileと略します)を開くと、リンク先となるネットワーク上のファイル(以降、TBL.fileと略します)が存在しないので、リンクの編集を要求されます。
そこで、リンク先の変更等をせず、『閉じる』ボタンをクリックすることで終了しております。
又、ご指摘をいただいたように、新たにVLOOKUP.file上で、TABLE.fileをVOOKUP関数で参照しようとすると、『値の更新』なるウィンドウが開き、(本来のリンク先であるべき)TABLE.fileを設定するよう要求されます。
しかしながら、既存のVLOOKUP関数が記述されたセルに限り、望んでいる結果が表示されるのです。
VLOOKUP.file内部で、TABLE.fileを保存しておき、TABLE.fileが変更・更新された場合は、VLOOKUP.file内部が更新されるのでは?
という、非常に都合のいい事を望んでおります。
そうであるのならば、内部で保存されているTABLE.fileを抽出できれば・・と考えました。
>しかしながら、既存のVLOOKUP関数が記述されたセルに限り、望んでいる結果が表示されるのです。
同一pc内で参照テーブルを消すと計算結果も消えてしまいますよね。
既存のVLOOKUP関数が記述されているセルで検索値を変更するとTable設定のメッセージが出るのではないでしょうか。書かれている状況は、ネットワークの設定か何かでトラフィックジャムを緩和するために、既に計算しているセルの計算結果は自動更新しないようになっているのが原因ではないかと推測します。恐らくどこかに参照データが残っている可能性は低いと考えます。
むしろネットワーク上のデータを何処かがバックアップしていないかを調べたほうが良いのではないでしょうか。
enasu様、ありがとうございます。
VLOOKUP関数は、次のように使っております。
セルA1:使用者がKEYとなる4桁の数字を入力
セルA2:vlookup(A1,Table.file上のマスター,2,FALSE)
セルA1の内容については、200種以上をテストいたしました。
その際、Table.fileのあるHDDの電源は入っておりません。
(HDDそのものにクラッシュの恐れがあります)
taisin0212様
失礼しました。この状況では何処かにあるテーブルを参照していると考えるのが当然ですね。
うーん。
enasu様、ありがとうございます。
からくりがはっきりせずモヤモヤしているのですが、
TABLE.fileの一部でも復旧できるのでは?
という甘い期待をしてしまうのです。
(同じテーブルを一から作るのは、まず無理なので)
Microsoft Excel File Format(Openoffice.orgが解析したもの)によれば、外部ファイル参照の場合は、参照範囲のセル内容がローカルxlsファイル内にキャッシュされるようです。
もちろんすべて読破したわけではないので流し読みですが、
5.10 Internal and External References
に参照に関しての仕様が書かれているようです。外部ファイル参照に関しては、参照ファイル情報(EXTERNSHEET)とともに、キャッシュされた行数(XCT)、キャッシュされたセル内容(CRN;行単位でキャッシュされる)が含まれます。
つまり、テーブルの内容はすべてローカルxlsファイル(VLOOKUP.file)内に保存されているはずですが、それを意図的に取り出す手段は用意されていないのではないかと思います。
上記仕様書にしたがってxlsファイルを手動で解析すれば、テーブルを復元することは不可能ではないでしょうが、途方もない作業ですね...
ardarim様、ありがとうございます。
『VLOOKUP.fileを開く際、リンク元の更新を行わない』を試し、新たにVLOOKUP関数を記述してみましたが、『値の更新』を要求されました。
キャッシュされた内容を参照するのにも、制限がかかっているのかもしれません。
(VLOOKUPで指定されたColumnのみキャッシュされている等)
新しいVLOOKUP関数は、既に入力済みのVLOOKUP関数が入っているシートと同じシートに入力しましたでしょうか?
仕様を見る限りでは、外部参照ファイルのデータは、シートごとにキャッシュされます。既に外部参照データがキャッシュされているシート内でならキャッシュを流用できる可能性があります。(ただし、入力済みの数式で使われている外部参照範囲と完全に一致している必要があるでしょう)
たとえば、Sheet1に
=SUM([example.xls]ExtSheet1!A1:B2)
と入力されているとすると、Sheet1に関連付けられたリンクテーブルには以下のような情報が一緒に保存されます。
EXTERNSHEET 1 Name = “<01H>[example.xls]ExtSheet1”(参照ファイル、シート名) XCT Number of CRN = 2(キャッシュされている行数=2) CRN 0 セル範囲 = A1:B1, データ = 1.11, 2.22(行1の参照データA1:B1がキャッシュされる) CRN 1 セル範囲 = A2:B2, データ = 3.33, 4.44(行2の参照データA2:B2がキャッシュされる)
ただ、Excelの仕様として新しい数式を入力したときは必ずキャッシュを更新しようとするのかもしれません。その場合は既存の入力済みの数式からしかキャッシュされたデータは利用できないことになります。
また大事なテーブルであるなら、HDD復旧サービス等でデータを取り出すなどしたほうが確実かと思います。お金はかかりますけど。
ardarim様、ありがとうございます。
VLOOKUP関数の引数における、参照先テーブルの[column]指定の引数を変えただけでも、ダメでした。
復旧サービス等で検討いたします。
(他にも大事なデータがございますので)
ありがとうございました。
ardarim様、ありがとうございます。
『VLOOKUP.fileを開く際、リンク元の更新を行わない』を試し、新たにVLOOKUP関数を記述してみましたが、『値の更新』を要求されました。
キャッシュされた内容を参照するのにも、制限がかかっているのかもしれません。
(VLOOKUPで指定されたColumnのみキャッシュされている等)