- 締切済み
Excelにて外部Excelファイルのデータを参照する方法
お世話になります。 Excelにて外部のExcelファイルのデータを参照する方法を教えていただけませんでしょうか。 具体的には、 1.Excelファイルa.xls b.xls c.xls・・・ があります。 2.a.xlsの a1 に b.xls の a1 の値を入力し、続けて a.xls の a2 に c.xls のa1・・・を繰り返していきます。上手く説明できないので、下を参照願います。 ------------------------------------------------ <a.xls> |a |b |c -+------- 1|a1|b1|c1 ←b.xls ないのa1-c1のデータ 2|a1|b1|c1 ←c.xls ないのa1-c1のデータ 3|a1|b1|c1 ←d.xls ないのa1-c1のデータ ------------------------------------------------ 上記を数百のファイル分行いたいのですが、外部ファイルを開いて該当のセルをコピーしていると非常に時間がかかります(といいますか無理でしょう)そこで、これらを数式から指定して、セルにコピーする事により、作業を効率化したいというわけです。 そのような方法がございましたら、教えていただけませんでしょうか。 よろしくお願い致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
VBA以外のご解答を良く理解できていませんが [Book1.xls]Sheet1!A1のBookの1とかSheet1の1の部分 は複写した時、相対的に変化してくれません。(当たり前と思っておられる方も多いでしょうが)。 それで複数ブックや複数シート参照型の本問などは算術式 (関数式)ではやりにくいですね。 Workbooks(n)(n=1-4とか)(worksheets(m)のmは1だけとして)で表せるようにして、簡単化できないかと思いました。テスト未。 dim s(5) s1=1:s(2)=1:s(3)=1:s(4)=1 p01: For j=2 to 4 For i=1 to 3 Cells(s1,i)=WorkBooks(j).Workshees(1).Cells(s(j),i) Next i s1=s1+1 Next j s(j)=s(j)+1 goto p01
- nishi6
- ベストアンサー率67% (869/1280)
算式だけでもできますが、説明が長くなりそうなのと数百のファイルということで、マクロにしてみます。 a.xls のSheet1のE列、F列に、参照するブックの、ドライブフォルダ名とBook名を登録します。 E列がドライブフォルダ名 F列がBook名です。 A B C D E F 1 C:\My Documents\・・・\・・・ test_Book1.xls 2 C:\My Documents\・・・\・・・ test_Book2.xls 3 C:\My Documents\・・・\・・・ test_Book3.xls : : N C:\My Documents\・・・\・・・ test_BookN.xls ファイル名の一覧は書き出しできるものとしています。 他Bookの対象シートは、Sheet1としています。 a.xls のSheet1のVBEのコードウインドウに下記マクロを貼り付けます。 (ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。 プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。) マクロを実行すると、a.xls のSheet1のA、B、C列に参照結果を書き出します。ご参考に。(当方、Excel97です) Sub TEST() Dim myFormula As String '他Bookの参照式 Dim rw As Long '行カウンタ 'E列にドライブとフォルダ、F列にBook名があると想定! For rw = 1 To Range("E65536").End(xlUp).Row myFormula = "'" & Cells(rw, 5) & "\[" & Cells(rw, 6) & "]Sheet1'!" Cells(rw, 1).Formula = "=" & myFormula & "A1" Cells(rw, 2).Formula = "=" & myFormula & "B1" Cells(rw, 3).Formula = "=" & myFormula & "C1" Next End Sub
- ka3
- ベストアンサー率18% (36/194)
『=[Book1.xls]Sheet1!$B$4』式を入れておけば、参照先ファイルを探します。
- hinebot
- ベストアンサー率37% (1123/2963)
#2です。 > 次に、b.xlsファイルでセルA1の内容を見てみましょう。 ごめんなさい、あわてました。(^^;) これは 「a.xlsファイルでセルA1の内容を見てみましょう。」の誤りです。 あと、この方法だと、b.xlsの内容を変えると、a.xlsの内容も変わっちゃいます。 値だけ参照したい場合は、いったん、#2の作業を行った後、シート全体をコピーし、別のシートに、形式を選択して貼り付け-値を選択、で貼り付けます。 最後に、最初のシートをシート毎削除してください。
- hinebot
- ベストアンサー率37% (1123/2963)
・b.xlsファイルでセルA1をコピー ・a.xlsファイルを開き、編集-形式を選択して貼り付け を選択 ・リンク貼り付けをクリック まずここまでしてみてください。 次に、b.xlsファイルでセルA1の内容を見てみましょう。 数式バーに =[a.xls]Sheet1!$A$1 って出てませんか? [ ] 内がファイル名 Sheet1 の部分がシート名 $A$1 がセルですね。($は絶対参照の記号です) ご質問内容の場合、 A列のみ上記を繰り返して元を作り、(直接、上記のように入力してもOK) $A$1 となっている部分の先頭の$を削除します。(つまり、A$1にするということ) =[a.xls]Sheet1!A$1 となったら、あとはこれを必要な列数分コピーすればOKです。 ただし、a.xls,b.xls,c.xls,…が、同じフォルダ内にあることが必要です。 別のフォルダにある場合は、[ ]内のファイル名にフルパスを記入する必要があります。 ※フルパスを記入というのは C:\Documents and Settings\Administrator\My Documents\a.xls みたいに書くことです。
- taknt
- ベストアンサー率19% (1556/7783)
挿入、オブジェクト、ファイルからで、他のエクセルファイルを読み込んで 貼り付けて、参照しながら コピーさせたらいいんじゃないでしょうか?