Registriert seit: 06.04.2018
Version(en): 2016
15.08.2019, 09:47
Hallo mir geht langsam der Überblick meiner Bezüge zu externen Arbeitsmappen verloren.
Wollte nun die Pfadangaben in einer Zelle hinterlegen und dann in den Bezügen diese dann über Namen ansprechen.
Im beigefügten Beispiel ist der Zelle B2 mit Namen "Pfad_Master" definiert
wenn ich nun den Pfad in der Formel durch "Pfad_Master" ersetze bekomme ich einen Fehler mit #Bezug
=INDEX('C:\Kalkulation\[Master.xlsx]Grundpreise_Material'!D:D;$E12) funktioniert
=INDEX(Pfad_Master!D:D;$E12) funktioniert nicht (auch mit hochkomma 'Pfad_Master' funzt das nicht).
was ist denn hier falsch oder geht das gar nicht!?
Gruß
Volker
Registriert seit: 16.04.2014
Version(en): xl2016/365
Hola,
Pfad_Master! bedeutet, dass du in der gleichen Datei auf das Blatt "Pfad_Master" verweisen willst. Das gibt es nicht, daher #BEZUG.
Wie ist B2 denn nun definiert? Nur als "Pfad_Master"? Wenn ja, woher soll Excel wissen, das sich dahinter ein echter Dateipfad befinden soll?
Gruß,
steve1da
Registriert seit: 06.04.2018
Version(en): 2016
in der Zelle mit Namen "Pfad_Master" ist als Text
C:\Kalkulation\[Master.xlsx]Grundpreise_Material
enthalten!
somit wollte ich über den Namen den Inhalt der Zelle ansprechen.
Gruß
Volker
Registriert seit: 16.04.2014
Version(en): xl2016/365
Hola,
ungetestet:
Code:
=INDEX(indirekt("'"&B2&"'!D:D");$E12)
Dafür muss die Zieldatei aber geöffnet sein.
Gruß,
steve1da
Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:1 Nutzer sagt Danke an steve1da für diesen Beitrag 28
• volker_xy
Registriert seit: 06.04.2018
Version(en): 2016
Danke leider nicht das was ich wollte.
Funktion müsste so sein als ob
=INDEX('C:\Kalkulation\[Master.xlsx]Grundpreise_Material'!D:D;$E12) in der Zelle steht.
nur halt, dass
C:\Kalkulation\[Master.xlsx]Grundpreise_Material - aus dem Inhalt einer Zelle kommt.
Da sich die Pfade immer ändern wäre es mir ganz recht hier immer den Überblick mit "sichtbarem" Pfad zu haben.
da dachte ich eigentlich, dass ich den Inhalt der Zelle mit "Namen" hier verwenden kann.
Gruß
Volker
Registriert seit: 06.04.2018
Version(en): 2016
Hallo Profis,
Generell funktionier das mit der Indirekt Formel schon aber, dass hier die "Quelldatei" geöffnet sein muss ist nicht optimal!
gibt es eine Möglichkeit das zu umgehen mögl. ohne VBA!
Gruß Volker
Registriert seit: 18.05.2016
Version(en): die, die da ist
15.08.2019, 20:17
(Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2019, 20:18 von silex1.)
Hallo,
ohne VBA nur so:
http://www.herber.de/excelformeln und bitte suchen .../tips.html?welcher=107
VG
von René und seinen 3 Gehirnzellen
Registriert seit: 06.04.2018
Version(en): 2016
Hallo René,
danke für den link.
Hab ich auch gefunden ist aber immer noch umständlich da die Zellen bei mir verstreut liegen.
Mein Versuch den Zellinhalt mi hilfszellen und verketten bringt mir zwar den korrekten „Text“ der Formel aber ausgewertet wird hier nix!
Kann’s nicht fassen, dass es da keine gute Lösung gibt.
Keiner eine Idee wie der Text dazu gebracht werden kann die „Funktion“ „auszuwerten“?
Wie sieht denn sowas in vba aus?
Gruß Volker
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Eine Lösung findest Du, wenn Du in unserer Suche mal nach excel4macro suchst.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• volker_xy
00202
Nicht registrierter Gast
Hallo, :19:
in
VBA würde das
prinzipiell so aussehen: :21:
Code:
Option Explicit
'Const strSheetQ As String = "Tabelle1" ' DIE Tabelle wird ausgelesen"
Const strSheetZ As String = "Tabelle1" ' Die Tabelle in DIESER Datei
'Const strRangeQ As String = "B2" ' Der Quellbereich wird ausgelesen
Const strRangeZ As String = "F12" ' Der Zielbereich
'Const strFile As String = "C:\Temp\TestDatei.xls" ' Pfad und Datei
Public Sub Main()
Dim strRangeQ As String
Dim strSheetQ As String
Dim strFile As String
With ThisWorkbook.Worksheets(strSheetZ)
strSheetQ = Right(.Range("B2").Value, Len(.Range("B2").Value) - InStrRev(.Range("B2").Value, "]", , vbTextCompare))
strFile = Split(Split(.Range("B2").Value, "[")(1), "]")(0)
strRangeQ = "D" & .Range("E12").Value
.Range(strRangeZ).Formula = "='" & Mid(strFile, 1, _
InStrRev(strFile, "\")) & "[" & _
Mid(strFile, InStrRev(strFile, _
"\") + 1) & "]" & _
strSheetQ & "'!" & strRangeQ
.Range(strRangeZ).Value = .Range(strRangeZ).Value
End With
End Sub
In
Zelle "
B2" steht bei mir "
C:\Temp\[Master.xlsx]Grundpreise_Material".
Das ist jetzt für
eine Zelle. Das lässt sich natürlich auch für
mehrere über eine Schleife machen. Kommt immer auf die
jeweiligen Gegebenheiten an.
Den Code kann man auch kürzer schreiben - habe ihn von
hier genommen und etwas angepasst. Nur um dir das
Prinzip zu zeigen.

Kürzerer Code: :21:
Code:
Option Explicit
Const strSheetZ As String = "Tabelle1" ' Die Tabelle in DIESER Datei
Const strRangeZ As String = "F12" ' Der Zielbereich
Public Sub Main()
Dim strRangeQ As String
With ThisWorkbook.Worksheets(strSheetZ)
strRangeQ = "D" & .Range("E12").Value
.Range(strRangeZ).Formula = "='" & .Range("B2").Value & "'!" & strRangeQ
.Range(strRangeZ).Value = .Range(strRangeZ).Value
End With
End Sub