webentwicklung-frage-antwort-db.com.de

Wert in einer geschlossenen Excel-Arbeitsmappe mit INDIRECT referenzieren?

Ich möchte auf einen Zellenwert in einem anderenclosedworkbook mit einer Formel (nicht VBA!) Verweisen. Der Sheet-Name wird als Variable gespeichert (im folgenden Beispiel ist C13 "Sheet2").

Wenn die andere Datei geöffnet ist, funktioniert Folgendes:

=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1")

Wenn die Datei geschlossen ist, funktioniert die obige Formel nicht, da kein absoluter Pfad angegeben ist. Aber ich habe es mit folgendem gemacht (beachte 'statt'):

='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1

Nun möchte ich das hartcodierte "Sheet2" durch einen dynamisch referenzierten Wert ersetzen, dh durch C13 (wie im ersten Code-Snippet zu sehen).

Kennt jemand eine Lösung ohne VBA oder andere Bibliotheken?

9
Chris

Es gibt definitiv keine Möglichkeit, dies zu tun mit Standardformeln. Eine verrückte Art von Antwort kann jedoch gefunden werden hier . Es vermeidet immer noch VBA und erlaubt es Ihnen, Ihr Ergebnis dynamisch zu erhalten.

  1. Erstellen Sie zuerst die Formel, die Ihre Formel generiert, fügen Sie jedoch nicht den = am Anfang hinzu! 

  2. Nehmen wir an, Sie haben diese Formel in der Zelle B2 von Sheet1 erstellt und möchten, dass die Formel in der Spalte c ausgewertet wird.

  3. Gehen Sie nun zur Registerkarte Formeln und wählen Sie "Name definieren". Vergeben Sie den Namen myResult (oder was auch immer Sie wählen) und schreiben Sie unter Refers To auf =evaluate(Sheet1!$B2) (beachten Sie den $)

  4. Gehen Sie schließlich zu C2 und schreiben Sie =myResult. Ziehen Sie nach unten und ... voila!

10
Ben I.

Überprüfen Sie die INDEX-Funktion:

=INDEX('C:\path\[file.xlsm]Sheet1'!A10:B20;1;1)
0
Daniel Silva

= INDIRECT ("'C:\Data [" & A8 & "] SheetNAME'! $ G9")

wobei A8 myExcelFile.xlsm enthält

und G9 enthält die wertvollen Daten Ihrer Quellarbeitsmappe.

0
Allan

Zumindest in Excel 2016 können Sie INDIRECT mit einer vollständigen Pfadreferenz verwenden. Die gesamte Referenz (einschließlich des Blattnamens) muss von '-Zeichen eingeschlossen werden.

Das sollte also für Sie funktionieren:

= INDIRECT("'C:\data\[myExcelFile.xlsm]" & C13 & "'!$A$1")

Beachten Sie den schließenden ' in der letzten Zeichenfolge (dh '!$A$1 umgeben von "").

0
Luke Warneminde

Das Problem ist, dass ein Link zu einer geschlossenen Datei mit dem Index arbeitet (nicht jedoch mit dem Index (indirekt

Es scheint mir, dass es sich um ein Programmierproblem der Indexfunktion handelt. Ich habe es mit einer if-Klauselzeile gelöst

C2=sheetname
if(c2=Sheet1,index(sheet1....),if(C2="Sheet2",index(sheet2....

Ich habe es über fünf Blätter gemacht, es ist eine lange Formel, tut aber was ich brauche.

0
Philipp

Auch ich suchte nach der Antwort auf das Referenzieren von Zellen in einer geschlossenen Arbeitsmappe. Hier ist der Link zur Lösung (richtige Formel) unten. Ich habe es in meinem aktuellen Projekt (das auf eine einzelne Zelle und ein Array von Zellen verweist) ausprobiert und es funktioniert einwandfrei. Ich hoffe es hilft dir.

https://www.extendoffice.com/documents/Excel/4226-Excel-reference-unopened-file.html

In der Formel ist E:\Excel file\ Der vollständige Dateipfad der ungeöffneten Arbeitsmappe, test.xlsx Der Name der Arbeitsmappe und Sheet2 Der Blattname, der den von Ihnen benötigten Zellenwert enthält zu referenzieren von und A:A,2,1 bedeutet, dass auf die Zelle A2 in der geschlossenen Arbeitsmappe verwiesen wird. Sie können sie je nach Bedarf ändern.

Wenn Sie manuell ein Arbeitsblatt auswählen möchten, auf das verwiesen werden soll, verwenden Sie diese Formel

=INDEX('E:\Excel file\[test.xlsx]sheetname'!A:A,2,1)

Nachdem Sie diese Formel angewendet haben, wird das Dialogfeld "Blatt auswählen" angezeigt. Wählen Sie ein Arbeitsblatt aus und klicken Sie auf die Schaltfläche "OK". Dann wird sofort auf den bestimmten Zellenwert dieses Arbeitsblatts verwiesen.

0
Tiffany