- ベストアンサー
文字列によるファイルの特定とセルの参照
エクセルで特定のセルの文字を結合して作成した文字列(ファイルパスとファイルを特定する文字列)を使って、指定したファイル(ブック)にあるセルを参照することはできますか。例えば、\\server\document\ファイル1という文字列をエクセルで作成してそのファイルにある特定のセルを参照したいのと考えています。どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えば Cドライブにある My Documentsにある ブックaaa14.xlsの Sheet3の A1の値を参照したいときは (1)まず=をいれ、 (2)その後すぐの始めと、シート名の終りで’(シングルクオーテーション)を入れて囲う。 (3)ブックの部分を[]で囲う。 すなわち ='C:\My Documents\[aaa14.xls]Sheet3'!A1 (4)そのブックは開いておく必要がある。 もし、上記のフォルダ、ファイル(ブック)、シート名 、セル番地が文字の形でどこかにあって、相対化・可変化 したいなら、=INDIRECT()関数の()内に上記の文字列に なるよう、要素と’や[や]を&で結合して作ればよい。c:\My Documents\は普通一定でしょうがA1セル、aaa14.xlsはA2セル、Sheet3はA3セル、A1も普通一定でしょうが、A4セルにはいっているとして、結合は 'c:\My Documents\[aaa14.xls]Sheet3'!a1 となります。 INDIRECTはキーボードから、ワークシートへ入力したと同じ効果のあるものと思っています。既にご回答もあるので 、またそう思っているので、朝と今もやって見るとやはり#REF!になリました。aaa14.xlsも開いています。どこかやり方が悪いのかも知れないので、検討してみますが、済みませんご質問者も一度やって見てください。 C14にSheet3!A1、C15に=INDIRECT(C14)は旨く行きます。
その他の回答 (2)
- snoopy64
- ベストアンサー率42% (337/793)
#2さんが「#REF!になった」とおっしゃったので、気になってもう一度(昨日は自宅で、今日はオフィスで)やってみましたが、問題なくできました。 んで、ちょっと気になったのですが、例えばSheet2のA1セルに「=Sheet1!A1」とした後、Sheet1のシート名を「S1」に変更すると、さっき入れた式が「='S1!A1」となっているんです。 このことは以前ここでどなたかが質問されたことなんですが。 この原因と規則性がわかっていないのですが、ひょっとしたら#2さんが#REF!になる事と関係あるかもって思いました。 何が言いたいかというと、「'」で囲む規則が明確でないので、今回のように、僕のPCではできたが#2さんのPCではできない、といった事がありえる、という事です。 ですので、僕と#2さんの回答によって、INDIRECT関数の存在と価値を知ると同時に、その無力さ(使い方を僕が把握していないだけかもしれないけど)も感じ取っていただけたと思います。 というわけで、回答になっていないかもしれませんが、なんとか頑張ってくださいヽ(^。^)ノ
- snoopy64
- ベストアンサー率42% (337/793)
A1からA6に、 C:\temp aaa.xls Sheet3 $A$1 ="'" & A1 & "\[" & A2 & "]" & A3 & "'!" & A4 =INDIRECT(A5) で、A6に参照結果が出ました。 ただし、INDIRECT関数のヘルプによれば、外部参照先のブックは開いおく必要があり、開いていないと#REF!エラーになるそうです。 頑張ってください(^o^)丿
お礼
snoopy64さんありがとうございました。雰囲気は良いところまできたのですが、今一歩で苦しんでいます。 やはりファイルをアクティブにしないと参照できないことがわかっただけでも助かりました。