Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Excel 2010)
他ブック参照について
投稿日時: 18/04/16 23:48:28
投稿者: fuuyan

ブック名がA1、シート名がB1に入力されている場合、そのブック、シートのセルC1を参照する計算式は
=INDIRECT("["&A1&"]"&B1&"!C1") となりますが、INDIRECTの関数を使用している為、ブックが開いてないと参照できません。
対象ブックが閉じている場合でも参照できるように絶対パスをどのように入力すれば、参照ができるか教えていただけないでしょうか?
よろしくお願いいたします

投稿日時: 18/04/17 06:05:39
投稿者: fuuyan

あと可能であれば、絶対パスもセルに入れての式を教えてください。「”」「&」等、いくつかの記号を追加して試しましたが、エラーが発生する状態です。

回答
投稿日時: 18/04/17 06:37:45
投稿者: WinArrow
投稿者のウェブサイトに移動

>INDIRECTの関数を使用している為、ブックが開いてないと参照できません。
 
これはExcelの仕様です。
絶対パスは意味がありません。
 
なお、INDIRECT関数は、揮発性関数といって、
この関数で参照しているセル以外の値が更新されても、常に、実行されるため
多用するとレスポンスに影響が出ます。
揮発性関数には、いくつかありますので、興味があれば、調べてみてください。

投稿日時: 18/04/17 06:58:43
投稿者: fuuyan

ご返信ありがとうございます。INDIRECT関数を絶対パスに変えたいのですが、式の入れ方がわかりません。ネットでも色々調べましたが、見つかりませんでした。

回答
投稿日時: 18/04/17 08:08:47
投稿者: WinArrow
投稿者のウェブサイトに移動

再掲
 
INDIRECT関数は
対象ブックヲが開いていることが前提の関数
なので、開かなくては使えません。
これはExcelの仕様です。
 
絶対パスを指定する方法を模索しているならば、
無駄な努力です。(「ないものねだり」です)
 
INDIRECT関数に固執するならば、
開けば済む話です。
 
「開くこと」に対する障壁が何なのか?
を説明して、アドバイスをお願いしては?

回答
投稿日時: 18/04/17 09:42:20
投稿者: Suzu

引用:
絶対パスもセルに入れての式

 
普通に、他ブックを開いた状態で参照させ、
その後、参照元のブックを閉じれば、絶対パスに変わりませんか?
 
絶対パスはその様にすれば得られます。
 
質問者自身が仰っている様に、
また、WinArrowさんが何度もおっしゃっている様に、
INDIRECTの関数 の引数を、絶対パスにしても 意味はありませんよ。

回答
投稿日時: 18/04/17 12:14:23
投稿者: んなっと

 形式を選択して貼り付け(値)
→=を=に置換
という2段階の方法です。
 
1. E列に数式準備
 
E2
="='"&A2&"["&B2&"]"&C2&"'!"&D2
下方向・↓
 
      A    B    C   D               E     F
1    パス ブック シート セル               式 貼り付け
2 E:\Excel\ 1.xlsx Sheet1  C1 ='E:\Excel\[1.xlsx]Sheet1'!C1     
3 E:\Excel\ 2.xlsx Sheet1  C1 ='E:\Excel\[2.xlsx]Sheet1'!C1     
4 E:\Excel\ 3.xlsx Sheet1  C1 ='E:\Excel\[3.xlsx]Sheet1'!C1     
 
2. E列をコピーしてF列に[形式を選択して貼り付け]→[値]
 
      A    B    C   D               E               F
1    パス ブック シート セル               式            貼り付け
2 E:\Excel\ 1.xlsx Sheet1  C1 ='E:\Excel\[1.xlsx]Sheet1'!C1 ='E:\Excel\[1.xlsx]Sheet1'!C1
3 E:\Excel\ 2.xlsx Sheet1  C1 ='E:\Excel\[2.xlsx]Sheet1'!C1 ='E:\Excel\[2.xlsx]Sheet1'!C1
4 E:\Excel\ 3.xlsx Sheet1  C1 ='E:\Excel\[3.xlsx]Sheet1'!C1 ='E:\Excel\[3.xlsx]Sheet1'!C1
 
3. 置換
 検索する文字列 =
 置換後の文字列 =
 すべて置換
 
      A    B    C   D               E     F
1    パス ブック シート セル               式 貼り付け
2 E:\Excel\ 1.xlsx Sheet1  C1 ='E:\Excel\[1.xlsx]Sheet1'!C1    猫
3 E:\Excel\ 2.xlsx Sheet1  C1 ='E:\Excel\[2.xlsx]Sheet1'!C1    猿
4 E:\Excel\ 3.xlsx Sheet1  C1 ='E:\Excel\[3.xlsx]Sheet1'!C1    犬

回答
投稿日時: 18/04/17 16:51:47
投稿者: WinArrow
投稿者のウェブサイトに移動

INDIRECT関数にこだわっているようですが、
 
INDIRECT関数以外でも対応可能な代案はないか?
 
という観点で考え直す意思があるならば、
それなりの説明を掲示すれば、よきアドバイスを貰うことができると思いますよ!
 

投稿日時: 18/04/17 22:05:21
投稿者: fuuyan

解答ありがとうございます。
 
文章の説明がたりず申し訳ありません。
 
参照したいブックが閉じている状態で行いたいのでINDIRECT関数は使いません。
作成したい数式は 絶対パス[ブック名]シート名!セル番地。
絶対パス、ブック名、シート名、セル番地と、セルに代入で行いたいのです。
 
普通にD1[A1]B1!C1と数式を作ればできると思いましたがエラーが出てできませんでした。
 
式をネットで調べた結果、発見したのが=INDIRECT("["&A1&"]"&B1&"!C1")になります。
セル番地の横に「”」「&」の記号が必要とわかったのですが、=INDIRECTを使うと
対象ブックが開いていないと使えません。
 
INDIRECTを削除してかわりにD1セル番地に絶対パスを入れて試しましたがエラーが出て使えません。
D1の横に「”」「&」も使いましたがエラーが出ます。
 
 
 
 

回答
投稿日時: 18/04/17 22:50:36
投稿者: WinArrow
投稿者のウェブサイトに移動

エラーがでるのは、おそらく入力が間違っていると主鱒が、
 
んなっと さんの「18/04/17 12:14:23」のレス
を試してみましたか?
 
質問者さんの説明のセル位置とは異なりますが、
お望みのことができると考えます。
 

回答
投稿日時: 18/04/18 14:40:48
投稿者: ゆーたん

>絶対パス、ブック名、シート名、セル番地と、セルに代入で行いたいのです。
セルに入力された文字列を「&」でつなげて外部参照風の文字列を作っても、
INDIRECT関数が使えないので外部参照のセル参照にはできない気がします。
 
こうなんていうかD1とA1を参照した数式が入ってるセルがあって、
D1にパス、A1にブック名が入っていて、
D1やA1を書き換えた瞬間に、その該当する閉じたブックからセルの値を取得したい
ということなんじゃないでしょうか?(^_^;)
マクロ(VBAのユーザー定義関数)なら可能ですか?
 
※一般機能だと、んなっとさんのやり方みたいに一手間手作業がいるのかもしれません。

回答
投稿日時: 18/04/18 15:39:13
投稿者: WinArrow
投稿者のウェブサイトに移動

なぜ、外部ファイルを閉じたままで参照したのかわかりませんが、
開くことで
INDIRECT関数が使えます。
 
開いてしまうと、他のユーザーには、使用制限が掛かります。
また、外部ファイルを他の誰かが使用していると、
それも、使用制限が掛かることになる。
ということで閉じたままで・・・ということなのかな?
 
VBAでSQLを使って外部ファイルを開かなくても「値」を取得は可能です。
参照するシートはリスト形式orテーブル形式で作成されている前提ですが・・・

投稿日時: 18/04/19 05:45:12
投稿者: fuuyan

WinArrowさま、Suzuさま、んなっとさま、ゆーたんさま、色々教えていただきありがとうございました。
他の方法も試してみます。本当にありがとうございました。