Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Pfadangaben in Bezügen via Namen einsezten
#1
Question 
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top
#4
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:
  • volker_xy
Antworten Top
#5
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
Antworten Top
#6
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
Antworten Top
#7
Hallo,

ohne VBA nur so:
http://www.herber.de/excelformeln und bitte suchen .../tips.html?welcher=107
VG
von René und seinen 3 Gehirnzellen

Antworten Top
#8
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
Antworten Top
#9
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:
  • volker_xy
Antworten Top
#10
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. Blush

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
________
Servus
Case
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste