Clever-Excel-Forum

Normale Version: variabler Quellenverweis?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

ich stehe mal wieder vor einem Rätsel.
Leider bin ich mir nichtmal wirklich sicher ob das möglich ist..

Ich habe mehrere Dateien die durch ein anderen Programm ausgegeben werden mit festem Dateinamen aber mit Datum im Namen (also wöchentlich wechselde Dateien).
Um jetzt nicht jede dieser Dateien durchschauen zu müssen, habe ich mir eine "Kontrolldatei" gebastelt die prüft, ob ich den Einzeldateien eine Spalte einen bestimmten Wert ausweist.
Dies klappt soweit ganz gut, leider habe ich nun mehrere Probleme:

[ol]
[li]Wenn ich die Datei schließe und neu öffne bekomme ich den Hinweis, dass ich sämtliche Quelldateien öffnen müsste um den Inhalt zu aktualisieren....das ist blöd weil es sich um mehr als 20 Dateien handelt...[/li]
[li]Sobald das Datum der zu prüfenden Dateien wechselt, muss ich sämtliche Verweise neu eintragen, was denn Sinn der Liste leider in Frage stellt.[/li]
[/ol]

Daher nun erstmal die Frage: 
Ist es möglich im Verweis auf eine andere Datei eine Variable einzubauen? Also Quasi:
=ZÄHLENWENN('V:\PFAD DER DATEI\[Dateiname_20161212.csv]DATEINAME2016'!$K:$K;">0") || 
=ZÄHLENWENN('V:\PFAD DER DATEI\[Dateiname_"setzbare VARIBLAE".csv]DATEINAME2016'!$K:$K;">0")

Die Variable sollte dann am besten auf eine Zelle verweisen in die der Wert entstprechend eingetragen werden kann.

2. Frage: 
Gibt es eine elegantere Lösung (evtl VBA?) um den Inhalt der anderen Excel Dateien einzulesen ohne alle öffnen zu müssen?


Vielen Dank schon mal vorab!!!
Hallo,



Code:
ZÄHLENWENN('V:\PFAD DER DATEI\[Dateiname_"setzbare VARIBLAE".csv]DATEINAME2016'!$K:$K;">0")

geht nur mit INDIREKT, das geht aber nicht mit geschlossenen Dateien!

Zitat:Gibt es eine elegantere Lösung (evtl VBA?) um den Inhalt der anderen Excel Dateien einzulesen ohne alle öffnen zu müssen?

Ich glaube nicht. Das Thema gab es aber schon mal. Suche mal danach!
Ich habe es mangels Anwendung noch nie ausprobiert.

Da aber manuell die Eingabe (und Aktualisierung) eines festen Bezugs in eine geschlossene Datei möglich ist, sollte das eigentlich auch per VBA gehen. Man schreibt dann einfach eine Funktion per VBA in eine Zelle. Oder man sucht und ersetzt in bestehenden.

Allgemein holt man übrigens Daten per verknüpfender Arrayformel sehr viel schneller rüber. Dafür lohnt es sich sogar, großzügig zu sein, also auch Zellen zu holen, die gar nicht interessieren, nur damit man einen zusammenhängenden Bereich holen kann.
lupo1 schrieb:Allgemein holt man übrigens Daten per verknüpfender Arrayformel sehr viel schneller rüber. Dafür lohnt es sich sogar, großzügig zu sein, also auch Zellen zu holen, die gar nicht interessieren, nur damit man einen zusammenhängenden Bereich holen kann.

Könntest du das noch einmal genauer ausführen?
Muss man dafür dann nicht auch das Ausgangstabellenblatt geöffnet haben?
Super! Vielen dank! 
Hätte ich mir auch später selbst suchen können, damit erstparst du mir aber die Arbeiot  Angel
Ich habe es endlich einmal selbst probiert - und es klappt ohne Probleme.

- die drei anhängenden Dateien in ein Verzeichnis kopieren (Verbleiben in Verzeichnis "Download" kein Problem)
- "Ziel" öffnen und den grünen Kommentar befolgen (Dateihygiene in Foren: Keine .xlsm anbieten, sondern nur den Code)

Die Dateien "Quelle" und "Alternativquelle" sollten natürlich geschlossen sein!
Ei Smile 
Das ist schön!!  Blush Blush Blush
Das bringt mich seeehr weiter.

Allerdings bleibt immer noch mein Problem mit den wechselnden Datei Namen.
Kann ich das Makro anpassen, dass es einen variblen Dateinamen Anspricht?

So in der Art stelle ich mir das vor:
X=bliebige Zelle mit händisch eingegebenem Wert 20161212      

[A1:E3] = "=[Quelle_"X".xlsx]Tabelle1!RC"
[A1:E3] = "=[Quelle_20161212.xlsx]Tabelle1!RC"
Klar. Die Texte "Quelle" und "Alternativquelle" lassen sich durch VBA-Variablen oder auch Zellbezüge ersetzen.
irgendwie bin ich gerade zu blöd...

Wenn ich möchte, dass der Dateiname angepasst wird...
Dann muss ich ja erstmal den Wert in meine Variable übergeben:
Code:
Dim ZellenInhalt As String
ZellenInhalt = Range("A1").Value

Aber wie bekomme ich nun diesen Wert in die verknüpfung?
Um mal bei deinem Code zu bleiben:

Code:
    Cells.ClearContents
    A = Timer
    [A1:E3] = "=[Quelle_ZellenInhalt.xlsx]Tabelle1!RC"
Wie kann ich innerhalb einer Klammer und "" eine Variable einbauen?
Er soll ja je nachdem was ich in die Variable übergebe, eine andere Datei öffnen....
Seiten: 1 2