Ich habe ein paar geschlossene Excel-Arbeitsmappen, auf die ich mit =INDEX(MATCH)
zugreifen würde, ohne sie zu öffnen.Index() & Indirekt() auf einem geschlossenen Excel
Leider, möchte ich indirekt auf sie beziehen, also auf der Grundlage der aktuellen Tabelle I in bin.
Z.B. - wenn ich in sheet
->then file path
:
AAB
->'C:\Users\vityata\Desktop\[AAB]Test'!$A:E
BBC
->'C:\Users\vityata\Desktop\[BBC]Test'!$A:E
Es scheint wie eine triviale Aufgabe, aber die einzigen Optionen, so etwas zu tun, scheinen die zu sein, folgende:
- öffnen Sie das Blatt und dann verwenden
Indirect()
(aber ich will nicht das Blatt öffnen) - Verwenden von VBA-Code
- Verwenden Datenverbindung (Ich will nicht, es)
- Verwenden
INDIRECT.EXT
(aber ich will nicht 3.e Partei Add-In) (aber es sollte irgendwie wiederverwendbar und wirklich letztes Mittel sein)
Ich habe ähnliche Probleme hier überprüft: How to referencing value in closed excel workbook by formula incl. variable sheetname? aber die erste Lösung ist eher zu kollmicated, um es zu tun.
Neue Ideen oder Best Practices?
aktualisieren Bisher habe ich folgendes mit VBA erreicht haben (obwohl ich würde gerne eine Nicht-VBA-Lösung haben):
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
Lange Rede kurzer Sinn - die Sub funktioniert wie erwartet, genau das, was ich will in der aktiven Zelle. Die Funktion funktioniert nicht. Irgendwelche Ideen, wie es funktioniert? Ich nehme an, dass es nicht funktioniert, weil ich ein bisschen WorksheetFunction.VLookup
missbrauche, aber ich kann einen Bereich nicht überschreiten, ohne die andere Arbeitsmappe zu öffnen. Ideen?
Vielleicht versuchen Sie, Ihren Code basierend auf der verknüpften Frage zu zeigen, damit andere sehen können, was Sie getan haben und möglicherweise in der Lage sind zu erkennen, wo Sie schief gelaufen sind. – FreeMan
@FreeMan - Einfach gemacht. Ich wollte nicht mit 'VBA' arbeiten und es war tatsächlich mein letzter Ausweg ... – Vityata
Hast du auch die" verrückte Art von Methode "versucht, die in [Choirbean] verlinkt ist (https://stackoverflow.com/a/28463798)/2344413) Antwort? Sieht so aus, als könnte das für dich funktionieren. – FreeMan