我有幾個封閉的Excel工作簿,如果不打開它們,我願意在=INDEX(MATCH)
之間訪問。已關閉的Excel上的Index()&Indirect()
不幸的是,我想引用它們間接,因而基於當前工作表我在上。
例如 - 如果我在sheet
- >then file path
:
AAB
- >'C:\Users\vityata\Desktop\[AAB]Test'!$A:E
BBC
- >'C:\Users\vityata\Desktop\[BBC]Test'!$A:E
這似乎是一個簡單的任務,但唯一的選擇,這樣做似乎是以下:
- 打開表,然後使用
Indirect()
(但我不想打開表) - 使用VBA代碼(但應以某種方式重複使用,真是不得已而爲之)
- 使用數據連接(我不希望它)
- 使用
INDIRECT.EXT
(但我不想3.第三方加載項)
我已經在這裏檢查過類似的問題:How to referencing value in closed excel workbook by formula incl. variable sheetname?但是第一個解決方案太複雜了。
任何新想法或最佳實踐?
更新 到目前爲止,我已經實現了與VBA以下(雖然我很想有一個非VBA的解決方案):
Option Explicit
Public Sub VlookupClosedWb(Optional strLookFor As String = "Erteilung Baugenehmigung", _
Optional strSheet As String = "APF", _
Optional lngColIndex As Long = 2)
Dim strRange As String
strRange = "'" & ThisWorkbook.Path & "\[" & strSheet & ".xlsx]" & "Monatsbericht'!$A:$E"
ActiveCell.Formula = "=VLOOKUP(""" & strLookFor & """," & strRange & "," & lngColIndex & ",0)"
End Sub
Public Function fVlookupClosedWb(Optional strLookFor As String = "Erteilung Baugenehmigung", _
Optional strSheet As String = "APF", _
Optional lngColIndex As Long = 2)
Dim strRange As String
strRange = "'" & ThisWorkbook.Path & "\[" & strSheet & ".xlsx]" & "Monatsbericht'!$A:$E"
fVlookupClosedWb = WorksheetFunction.VLookup(""" & strLookFor & """, " & strRange & ", " & lngColIndex & ", 0)
End Function
長話短說 - 分按預期工作,提供準確我想要在活動單元格中。該功能不起作用。任何想法如何使其工作?我想這不起作用,因爲我在濫用WorksheetFunction.VLookup
,但是如果不打開其他工作簿,我無法傳遞一個範圍。想法?
也許嘗試根據鏈接問題顯示您的代碼,以便其他人可以看到您做了什麼,並可能能夠發現您出錯的位置。 – FreeMan
@FreeMan - 剛剛完成。我不想用'VBA'工作,這實際上是我最後的手段...... – Vityata
另外,你是否嘗試過在[Choirbean]中鏈接的「瘋狂的方法」(https://stackoverflow.com/a/28463798/2344413)的答案?看起來這可能只適用於你。 – FreeMan