2017-09-14 18 views
1

私は閉じたブックのセルをVLOOKUP?を返すセル式に取り組んでいます(したがって、間接は機能しません)。問題は、アクティブなシートの値を使用して、参照ブック内のシートの名前を判別し、それを把握できないということです。ここに私が持っている最高です。セルの値/内容を使用して、外部参照ファイルまたはシート名を決定しますか?

=VLOOKUP($A3,'[Other Workbook.xlsm]ObsDFW'!$1:$800,COLUMNS($D4:D4)+3) 

ObsDALは、「他のワークブック」でシートの1名です。私が理解できないことは、その名前の "Obs"部分を一定に保つが、セル値から "DFW"を取る方法です。不正なコードを使用して

は、私はそれになりたい:

=...[Master Statistics.xlsm]("Obs" & A1)'!$1:$800... 

コンテキストが役に立つ場合は、「その他のワークブックは、」空港のシリーズごとに1枚に分け毎時の気象観測、いっぱいです。この情報を別のファイル/ブックに取り込もうとしているので、コードを何度も繰り返して各空港を指定する必要はありません。

ありがとうございます!

+0

これは間接的に必要となるため、数式では実行できません。また、記載されているとおり、間接は閉じたワークブックでは機能しません。ブックを非表示にしてからvlookupを実行し、正しいセルに値を割り当てて、次に隠れたワークブックを閉じるvbaが必要になります。 –

+0

どうすればそれをやりますか? –

+1

これで始める:https://stackoverflow.com/questions/579797/open-excel-file-for-reading-with-vba-without-display –

答えて

1

このVBAアプローチを試すことができます。あなたは

Sub VlookupClosedWorkbook() 
Dim dynamic_part As Variant 
dynamic_part = Range("B1").Value 'You should enter in cell B1 dynamic part of sheet name 
For x = 3 To Range("A" & Rows.Count).End(xlUp).Row 
Range("B" & x).Value = "=VLOOKUP(A" & x & ",'[Other Workbook.xlsm]Obs" & dynamic_part & "'!$1:$800,COLUMNS($D4:D4)+3,FALSE)" 
Next x 
End Sub 

あなたdynamic_part(シート名)に基づいて、VLOOKUP式を調整している。この方法は、あなたがあなたの動的な部分を変更後の形状と、それを発射するために、このマクロを割り当てます。初めてトリガするときは、両方のワークブックを開いていることを確認してください。

+0

私は基本的にこれをコピー/ペーストして、開いている他のワークブックを変更しましたが、このコードは何も変更/変更されていませんでしたか? どのように動作するのか少し詳しく説明できますか? –

+0

'Developerタブ' => 'Macros'を使ってこのマクロ... etherを実行するか、このマクロをシェイプに割り当てる必要があります。マクロをシェイプに割り当てるには、シェイプを右クリックし、「Assign macro」をクリックします。その後、図形をクリックすると、マクロが自動的に実行されます。 –

+0

また、B1の範囲の式の正しい動的部分を設定していることを確認してください –

関連する問題