Excelの質問です


1つのBookに、以下の名前の2つのシートを用意する
・Data
・FileList

シート:FileListには、A1のセルから下に向かって
A1:C:\data01.xls
B1:C:\data02.xls
C1:D:\data03.xls
という具合にファイル名のパスを記述する(ここで記述するファイル名のパスは、このBookを利用する毎に入れ替える)


シート:Dataには、A1のセルから下に向かって
A1: FileList!A1で指定したファイルパス(=C:\data01.xls)のSheet1のA1のセルの値
B1: FileList!B1で指定したファイルパス(=C:\data02.xls)のSheet1のA1のセルの値
C1: FileList!C1で指定したファイルパス(=C:\data03.xls)のSheet1のA1のセルの値
を埋め込みたい。


この場合、Data!A1やData!B1等に埋め込むセルの式はどのようにしたらよいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/06/22 00:25:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:airplant No.1

回答回数220ベストアンサー獲得回数49

ポイント35pt

Excelの式だけでは、ブック名への外部参照をダイナミックに変えることはできません。→ と、思います。

つまり、[C:\data01.xls]Sheet1!$A$1のうち、[ファイル名]部分に参照の式が書けないということです。

●逃げ手

 FileListに記載するファイルが少なく、参照セルも少ないのであれば、FileListシートに作らず、最初からDataシートにファイル名を書いて、それを修正すればいいと思います。

 きっと私ならそうします。

 FileList!A1に書くのも、Data!A1に書くのも同じことだからです。

 参考: http://oshiete1.goo.ne.jp/qa425552.html


●マクロなら

 ファイル数が多かったり、1個のファイルから複数セルを参照していて個別に書き換えができないときは、次のマクロで希望のことが実現できます。


1.Data!A1へ入れる式

=eval("[" & FileList!A1 & "]Sheet1!A1")

2個目も同様に書きます。FileList!B1の感じで。


2.マクロ

 関数を書き、式の結果を受け取れるようにします。難点は、このように別シートに値があると、自動更新されない点です。同一シートなら自動更新されました。

 そのために、RefreshCellsというマクロを載せておきました。

内容が変わったときは、Dataシートで適当な範囲選択して、RefreshCellsマクロを動かすと、セルが全部正しい内容に変わります。

Option Explicit

' (1)文字列を式とみなすようにするマクロ
Public Function Eval(eValStr As String) As Variant

    Eval = Evaluate(eValStr)

End Function

' (2)リフレッシュするマクロ
Public Sub RefreshCells()
    
    Dim P As Range
    
    For Each P In Selection
        SendKeys "{F2}", True
        SendKeys "{ENTER}", True
    Next P

End Sub

P.S.

>FileListには、A1のセルから下に向かって A1:C:\data01.xls B1:C:\data02.xls・・・

→ これは右に向かってますね。下ならA1,A2・・・ですね。

id:rikuzai No.2

回答回数1366ベストアンサー獲得回数141

ポイント35pt

Excelで文字列を使用した参照をする場合「INDIRECT関数」というものがあります。

これは参照元のブックが開かれていないとエラーになってしまいますが、

逆に参照元のブックの名称に重複がなく、全てを開けておく事が可能なら、

FailListにはパスでなく、ブック名のみを記入し、

Dateシートには

A1=INDIRECT("["&FailList!A1&"]Sheet1!A1")

の数式で参照することが出来ます。

http://office.microsoft.com/ja-jp/excel/HP052091391041.aspx


以上ご参考まで。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 mj99 138 127 38 2007-06-17 02:03:56

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • [Excel]Evaluteの怪 Shuのつまづき日記 2007-06-15 03:48:00
    Excelの質問*1があったので、答えようとしてはまってしまいました。 Functionタイプのマクロを書くと、Excelからは普通の関数と同じように見えます。 回答で、この関数を書いたのですが、な
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません