Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2016)
別のファイルの値を取得
投稿日時: 20/08/21 15:10:53
投稿者: sunflower

別ファイルの値を取得したいのですが、ファイル名を変更することがあります。
セル番地にファイル名を設定し、設定したファイル名で関数を使って取得できますか?
 
直接ファイル名を指定した場合は、下記のようになりますが、
='C:\TEST\TEST1\[AUG.xlsx]Sheet1'!$A$1
 
セルA1 C:\TEST\TEST1
セルA2 AUG.xlsx
 
セルA1とA2の内容で関数を設定することは可能でしょうか。

回答
投稿日時: 20/08/21 16:57:30
投稿者: sk

引用:
セル番地にファイル名を設定し、設定したファイル名で関数を使って取得できますか?

Microsoft Docs より:
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/indirect-function-to-create-reference
 
引用:
='C:\TEST\TEST1\[AUG.xlsx]Sheet1'!$A$1
 
セルA1 C:\TEST\TEST1
セルA2 AUG.xlsx

=INDIRECT("'"&A1&"\["&A2&"]Sheet1'!$A$1")
 
-------------------------------------------------------
 
但し上記記事にある通り、INDIRECT 関数によって参照可能なのは
開いているブックのセル範囲です。
 
閉じているブックのセル範囲は参照出来ません。
(なので絶対パスを指定してもあまり意味がない)

回答
投稿日時: 20/08/22 13:26:37
投稿者: んなっと

名前定義とPowerQueryを使う方法です。
  
            A
1      C:\TEST\TEST1
2        AUG.xlsx
3 C:\TEST\TEST1\AUG.xlsx
  
A3
=A1&"\"&A2
  
→A3だけ選択
→[数式][名前の定義]
→名前:
FName
→OK
→[データ]
→[データの取得]
→[その他のデータソースから]
→[空のクエリ]
→[詳細エディター]
→「let ... in ..」の部分を全選択して削除
→以下の文字列を貼り付け
 
let
    Nam= Excel.CurrentWorkbook(){[Name="FName"]}[Content]{0}[Column1],
    Src = Excel.Workbook(File.Contents(Nam), null, true),
    Sht = Src{[Item="Sheet1",Kind="Sheet"]}[Data]
in
    Sht
  
→完了
→閉じて読み込む
  
ファイル名などを変更するときは
 [データ]
→[すべて更新]

トピックに返信