Ich habe versucht, das Problem zu lösen, kenne mich jedoch mit der Codierung nicht aus.
Hier ist meine Codezeile,
='[WorkBook]BOM'!G6
Ich möchte, dass der Arbeitsmappenaufruf eine Zelle anspricht, sodass ich alle Arbeitsmappennamen ohne Suchen und Ersetzen in einer Massenoperation ersetzen kann.
Im Wesentlichen so etwas (obwohl dieser Code nicht funktioniert, dient er nur als Referenz)
='[=E1]BOM'!G6
Dann könnte ich in Zelle E1 jeden beliebigen Text eingeben, um den Namen der Arbeitsmappe zu ersetzen. Ich versuche, die Formel dafür zu finden.
Antwort1
Sie sollten die INDIRECT()
Funktion verwenden, um eine Textzeichenfolge als Funktion auszuwerten.
=INDIRECT("'["& E1 & "]BOM'!G6")
Beachten Sie, dass die INDIRECT()
Funktion den Wert nur dann zurückgibt, wenn die referenzierte Arbeitsmappe geöffnet ist. Andernfalls wird ein #REF!
-Fehler zurückgegeben.
Antwort2
INDIRECT
funktioniert nicht mit geschlossenen externen Arbeitsmappen. Die beste Möglichkeit zur Automatisierung scheint zu sein, den Arbeitsmappenpfad in eine Zelle einzugeben und ein Makro zu schreiben, das alle Vorkommen des alten Arbeitsmappennamens findet/ersetzt und durch den neuen Arbeitsmappennamen ersetzt.
Antwort3
Mit meiner Lösung können Sie auf einen Bereich nur verweisen, wenn Sie ihn zuerst benennen.
Beispielsweise benennen Sie den Bereich A1:A100 in Arbeitsmappe 1 als MyRange
Dann können Sie in Ihrer aktuellen Arbeitsmappe "MyRange" in E1 in Arbeitsmappe 2 eingeben
dann verwenden Sie INDIREKT(E1)