Excel: Sverweis in allen Dateien eines Ordners

Hallo,

ich habe da ein Problem.

Ich würde gerne in einem Tabellenblatt eine Suchfunktion einfügen.

Diese soll in mehreren, identisch aufgebauten, Arbeitsmappen, welche alle in einem gemeinsamen Ordner liegen, den gewünschten Begriff suchen und dann einen zugehörigen Wert, welcher ein paar Spalten weiter ateht, liefern.

Diese Arbeitsmappen sind dabei nicht geöffnet und haben mehrere Tabellenblätter. Gibt es da eine Möglichkeit die auch einem absolutem Excellaien verständlich ist?

Falls meine Problemstellung nicht verständlich ist bitte nachfragen.

Danke schon mal
Grüße
Karl

Hallo Karl,

Ich würde gerne in einem Tabellenblatt eine Suchfunktion
einfügen.

Diese soll in mehreren, identisch aufgebauten, Arbeitsmappen,
welche alle in einem gemeinsamen Ordner liegen, den
gewünschten Begriff suchen und dann einen zugehörigen Wert,
welcher ein paar Spalten weiter ateht, liefern.

Diese Arbeitsmappen sind dabei nicht geöffnet und haben
mehrere Tabellenblätter. Gibt es da eine Möglichkeit die auch
einem absolutem Excellaien verständlich ist?

man kann mit Excel vieles, ja fast sogar alles programmieren. Es ist aber immer eine Frage des Aufwands, der betrieben werden muss. Dein Wunsch ist nicht gerade trivial und ist auch für Profis nicht im Handumdrehen zu lösen. Die Antwort auf Deine Frage lautet deshalb: Nein!

Wenn ich müsste, würde ich schon irgendeine Lösung finden. Allerdings wäre diese dann so kompliziert (und wahrscheinlich auch sehr fehleranfällig), dass ein Laie das nicht nachvollziehen kann.

Falls meine Problemstellung nicht verständlich ist bitte
nachfragen.

Die Problemstellung ist verständlich beschrieben. Was ich aber nicht verstehe ist, warum die Daten auf unterschiedliche Arbeitsmappen und -blätter aufgeteilt wurden? Ich weiß diesbezüglich nicht, ob ich weinen oder lachen soll. Sowas sollte man besser nicht machen, denn die Gefahr ist sehr groß dass (z.B. bei Produkten) die gleiche Artikelnummer mehrfach mit unterschiedlichen Eigenschaften (z.B. Preis) vorkommt. Ich weiß nicht genau, was du überhaupt vorhast, aber ich tendiere schon fast zu sagen, dass Excel nicht das richtige Programm dafür ist.

MfG
Stephan

Hallo Karl,

Diese soll in mehreren, identisch aufgebauten, Arbeitsmappen,
welche alle in einem gemeinsamen Ordner liegen, den
gewünschten Begriff suchen und dann einen zugehörigen Wert,
welcher ein paar Spalten weiter ateht, liefern.

und dann, wohin soll geliefert werden?

Diese Arbeitsmappen sind dabei nicht geöffnet und haben
mehrere Tabellenblätter.

Was heißt das nun, muß in jedem Blatt gesucht werden oder nur je Datei in einem bestimmten Blatt?

Gib insgesamt mal mehr Detailinfos bitte.

Gibt es da eine Möglichkeit die auch
einem absolutem Excellaien verständlich ist?

Sofort verständlich? nein. Wird sowieso auf Vba hinauslaufen. Liegt dann an dir wie schnell du anhand des erhaltenen Codes Vba erlernst, zumindest soweit daß du den einen Code vom Ablauf her verstehst um ihn dann selbst leicht abändern zu können.

Falls meine Problemstellung nicht verständlich ist bitte
nachfragen.

Schon geschehen :smile:

Gruß
Reinhard

Danke! ( Excel: Sverweis in […])
Hallo,

erst einmal Danke für Deine Antwort. Schade, ich hatte gehofft es gibt eine halbwegs einfache Lösung :frowning:

Zu Deiner Frage:
Es geht dabei um Ausbeuteauswertungen. Dafür werden pro Kalenderwoche die einzelnen Aufträge mit Auftragsnummer in einer Datei gespeichert, welche fast gleich heißt, bis eben auf die Angabe der Kalenderwoche. Es gibt also diese Auftragsnummer auf jeden Fall nur in einer zu durchsuchenden Arbeitsmappe. Innerhalb dieser Arbeitsmappe nun gibt es verschiedene Tabellenblätter mit verschiedenen Ausbeutearten, bezogen auf die verschiedenen Materialien die zum Einsatz kommen.

Gewünscht wird nun das Zusammenfühen bestimmter Daten. Herauskommen soll ein Tabellenblatt auf welchem man die Auftragsnummer eingibt, und dann ausgewählte Daten aus den bestehenden Arbeitsmappen neben dieser Auftragsnummer angezeigt werden.

Problem ist, das es recht viele Dateien sein können, die man nicht alle aufmachen sollte, diese Daten auch nicht von meinem Bereich gepflegt werden, ich also auf jeden Fall mit den bestehenden Dateien arbeiten muss.

So ich hoffe ich habe jetzt alle Klarheiten beseitig - oder so ähnlich :smile:

Also nochmal Danke!
Grüße
Karl

Danke! ( Excel: Sverweis in […])
Hallo, auch Dir Danke für Deine Antwort.

Um mir jetzt viel Schreibarbeit zu ersparen möchte ich zur Beantwortung Deiner Fragen auf mein anderes Dankeposting verweisen. Ich denke dort dürfte das meiste beantwortet sein.

Da ich aber auch von Vba keine Ahnung habe, müsste die Lösung schon einfach oder sehr gut erläutert sein. Wenn also nicht schon eine fertige Lösung vorliegt die man einfach mal angeben könnte um zu testen ob ich damit klar komme, lohnt sich die Arbeit wohl eher nicht, außer man hat viel Spaß an solchen Aufgaben :smile:

Also auch Dir nochmal ein Danke!
Grüße
Karl

Hallo Karl,

Es gibt also diese
Auftragsnummer auf jeden Fall nur in einer zu durchsuchenden
Arbeitsmappe.

und dort auch nur einmal? In welchem Blatt der jeweiligen Mappe ist nicht bekannt?

Problem ist, das es recht viele Dateien sein können, die man
nicht alle aufmachen sollte, diese Daten auch nicht von meinem
Bereich gepflegt werden, ich also auf jeden Fall mit den
bestehenden Dateien arbeiten muss.

Ohne Dateien zu öffnen? Verknüpfungen?

Gruß
Reinhard

Weitere Details ( Excel: Sverweis in […])
Nein. in der jeweiligen Arbeitsmappe in welcher diese Auftragsnummer zu finden ist, ist sie dann auf jedem Tabellenblatt.

Auf dem ersten ist die Auftragsübersicht mit verschiedenen allgemeinen Daten, auf dem zweiten dann die Ausbeute zu den Aufträgen mit Material A, auf dem dritten Material B usw. Insgesamt sind es 4 Tabellenblätter.

Wenn es geht, sollte es sein ohne diese zu öffnen, außer man könnte dieses automatisch machen, suchen, Daten aktualisieren, wieder schließen. Sonst ist das sehr viel Handarbeit, vor allem, da jede Woche eine neue Datei dazu kommt.

Hallo Karl,

Nein. in der jeweiligen Arbeitsmappe in welcher diese
Auftragsnummer zu finden ist, ist sie dann auf jedem
Tabellenblatt.
Auf dem ersten ist die Auftragsübersicht mit verschiedenen
allgemeinen Daten, auf dem zweiten dann die Ausbeute zu den
Aufträgen mit Material A, auf dem dritten Material B usw.
Insgesamt sind es 4 Tabellenblätter.

Jetzt mal Butter zu den Fischen, wie würden wenn du es per syverweis machen würdest die Formeln aussehen?

so:

=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle1‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle2‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle3‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle4‘!A1:E100;5;0)

?

Wenn es geht, sollte es sein ohne diese zu öffnen,

Wird nicht gehen, im Allgemeinen muß man eine Datei immer erst öffnen um darin etwas zu lesen/schreiben.

außer man könnte dieses automatisch machen,

Kann man mit Vba.

Gruß
Reinhard

so:

=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle1‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle2‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle3‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle4‘!A1:E100;5;0)

fast so, die Spalten in der die mitzunehmenden Daten stehen können variieren. Plus: Sollte die Auftragsnummer in einer der anderen Arbeitsmappen stehen, kann es so aussehen:

=Sverweis(A1;‚C:\test\Mappe_KW38.xls]Tabelle1‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe_KW38.xls]Tabelle2‘!A1:E100;11;0)
[…]
oder so:
=Sverweis(A1;‚C:\test\Mappe_KW39.xls]Tabelle1‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe_KW39.xls]Tabelle2‘!A1:E100;11;0)
[…]

aber wie geagt, die zu suchende Auftragsnummer ist nur in _einer_ dieser Mappen

Kann man mit Vba.

Blöd gefragt: Wäre das schwer? Kannst Du Lektüre empfehlen wo ich mir das recht einfach aneignen kann oder zählt das schon nicht mehr zu den Grundkenntnissen die man recht schnell lernen kann.

Oder bin ich dann hier in der Zwischenzeit im falschen Forum? :smile:

Gruß
Reinhard

Hallo karl,

=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle1‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle2‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle3‘!A1:E100;5;0)
=Sverweis(A1;‚C:\test\Mappe1.xls]Tabelle4‘!A1:E100;5;0)

fast so, die Spalten in der die mitzunehmenden Daten stehen
können variieren.

*aargs* davon hab ich nix :frowning:
Ist es so schwer mir zu sagen, gesucht wird eine Auftragsnummer, die im masterblatt in A1 steht in allen Mappen, dort in allen Blättern.
Per Sverweis möchte ich
in Blatt1 im Bereich A1:E100 suchen und bei Treffer den Wert aus
Spalte D haben
in Blatt2 im Bereich A1:X100 suchen und bei Treffer den Wert aus
Spalte R haben
usw.

Das Ergebnis sollte dann so aussehen:

Auftragsnummer Datei Blatt1 Blatt2 Blatt3 Blatt4 
 xyz Dat1.xls 45 12 34 45

oder wie auch immer das Ergebnis aussehen soll.
Ich kann locker mit Vba alle Mappen nacheinander lesen und auswerten.
Dazu MU? ich aber wissen welchen (SVerweis-) Bereich pro Blatt und welche Rückgabespalte pro Blatt.

Kann man mit Vba.

Blöd gefragt: Wäre das schwer? Kannst Du Lektüre empfehlen wo
ich mir das recht einfach aneignen kann oder zählt das schon
nicht mehr zu den Grundkenntnissen die man recht schnell
lernen kann.

Das ist schon oberhalb der Grundkenntnisse. Macht aber nix, du sollst es ja nur benutzen. So wie SVerweis in Excel, da steckt ja auch Code dahinter von dem du nix kennst.

Damit du mal einen Vorgeschmack bekommst wie so ein Code aussieht, nachstehend ein Beispielcode. DEIN Code ist dann nur noch unwesentlich länger.

Oder bin ich dann hier in der Zwischenzeit im falschen Forum?

Nein, bist schon richtig.

Gruß
Reinhard

Teste es in einer neuen leeren mappe.
Drücke Alt+F11, dort dann Einfügen—Modul, dortrein kopierst du den Code, Editor schliessen. In Excel dann Alt+F8 und den Code ausführen.

Der Code listet in einem neuen Blatt Mappen und ihre blätter auf. In der Statusleiste siehst du den Fortschritt.
Aus Testzwecken ist derzeit ist die Anzahl der Liste auf 10 beschränkt, willst du alle haben, schmeiß die Zeile
If Anz = 10 Then Exit For
raus oder setz ein Hochkomma davor.

Option Explicit
'
Sub SVerweisAusDateiliste()
Dim objFs, objRootFolder, objFile, wks As Worksheet
Dim Zei As Long, Spa As Long, wkb As Workbook, Anz As Integer
Dim Z As Long
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objRootFolder = objFs.GetFolder("C:\test")
Worksheets.Add after:=Worksheets(Worksheets.Count)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ActiveSheet
 For Each objFile In objRootFolder.Files
 Z = Z + 1
 Application.StatusBar = "Datei " & Z & " / " & objRootFolder.Files.Count
 If objFile.Name Like "\*.xls" Then
 Workbooks.Open objFile, False, True
 Set wkb = ActiveWorkbook
 Zei = Zei + 1
 Spa = 2
 .Cells(Zei, 1).Value = wkb.FullName 'objFile.Full '.Name
 For Each wks In wkb.Worksheets
 .Cells(Zei, Spa).Value = wks.Name
 Spa = Spa + 1
 Next wks
 wkb.Close savechanges:=False
 Anz = Anz + 1
 End If
 If Anz = 10 Then Exit For
 Next objFile
End With
Application.ScreenUpdating = True
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub

*aargs* davon hab ich nix :frowning:

Auch *aargs*. Da hab ich aber ganz schön auf dem Schlauch gestanden *rotwerd*. Zu meiner Verteidigung ist zu sagen, dass ich normalerweise meine Problemchen, eventuell mit Hilfestellung, selber lösen muss. Nahezu fertige Lösungen bin ich nicht gewöhnt :smile:

Im Moment bin ich wieder zu Hause, habe also die Dateien selber nicht zur Verfügung, ich werde mich aber bestimmt nächste Woche nochmals, hier an dieser Stelle, an Dich wenden. In der Zwischenzeit häng ich mich mal an Deinen Codeschnipsel und versuche zu entziffern was und wie er alles machen könnte *g*. Am Montag gibts dann wahrscheinlich den nächsten Hilfeschrei :smile:

Bis dahin schon mal herzlichsten Dank für Deine Geduld, auch was meine Begriffsstutzigkeit betrifft.

Grüße
Karl

Hallo karl,

Im Moment bin ich wieder zu Hause, habe also die Dateien
selber nicht zur Verfügung, ich werde mich aber bestimmt
nächste Woche nochmals, hier an dieser Stelle, an Dich wenden.

gerne, wir kriegen die Kuh schon vom Eis :smile:

In der Zwischenzeit häng ich mich mal an Deinen Codeschnipsel
und versuche zu entziffern was und wie er alles machen könnte
*g*.

Sehr gute Idee, du weißt daß du im Code den Curser in ein befehslwort stellen kannst, dann F1 drücken und es kommt Hilfe zu dem Befehl!?
Sehr hilfreich.

Bis dahin schon mal herzlichsten Dank für Deine Geduld, auch
was meine Begriffsstutzigkeit betrifft.

Quark mit Begriffsstutzigkeit, naja ein bißchen, aber nicht schlimm *grien* Du hast den sehr typischen normalen Fehler gemacht, mir nur die Informationen zu geben, die du für nötig hälst.
Dabei sitzt du vor deinen Mappen, weißt genau wie sie aufgebaut sind, welche daten du da suchen willst u.v.m.
Und ich? Ich weiß von gar nix…

Ich will, ich muß um das zu lösen wissen, was genau ich wo suchen muß und welche Spaltenzelle in dem Fall zurückgeliefert werden soll.

Da prallt halt Fachchinesisch auf Fachchinesisch. Du erzählst von Ausbeutung, materialnr usw, ich von Suchbereichen, Zellen usw.

Schönes WE
Gruß
Reinhard

Hallo,

etwas verspätet aber immerhin.

Also, in Datei x:\Pfad1\Pfad2\Eingabe_Daten_Ausbeute.xls soll in Zelle B21 eine Auftragsnummer eingegeben werden. Diese soll per Sverweis gesucht werden in x:\Pfad3\pfad4\Ausbeute_KW??.xls. Die Fragezeichen stehen dabei für eine bestimmte Kalenderwoche. Durchsucht werden müssten alle dateien im […]\Pfad4, oder mindestens mal die letzten 5 abgespeicherten. Dabei steht die gesuchte Auftragsnummer nur in einer Datei der zu durchsuchenden.

Aus diesen Mappen brauche ich -
Blatt 1
Bereich D8:S22 | Wert aus Spalte J | Wert aus Spalte N
Blatt 2
Bereich D7:T21 | Wert aus Spalte M | Wert aus Spalte O | Wert aus Spalte R
Blatt3
Bereich C7:T21 | Wert aus Spalte M | Wert aus Spalte O | Wert aus Spalte R

Aussehen sollte es dann so:

Tabellenblatt: [Eingabe\_Daten\_Ausbeute.xls]!Tabelle1
 │ A │ B │ C │ D │ E │ F │ G │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
19 │ Maschinennummer │ Auftragsnummer │ Ausbringung absolut │ Ausbringung Prozent │ Istentnahme Mat1 │ Sollentnahme Mat1 │ Ausbeutequot. Mat1 │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
20 │ │ │ │ │ Istentnahme Mat2 │ Sollentnahme Mat2 │ Ausbeutequot. Mat2 │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
21 │ 1 │ 55444333 │ 123456789 │ 90,25 │ 246,90 │ 123,45 │ 50,00 │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
22 │ │ │ │ │ 18517 │ 12345 │ 66,00 │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
23 │ │ │ │ │ │ │ │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
24 │ (fest) │ (eingeben) │ (Blatt1 SpalteJ) │ (Blatt1 SpalteN) │ (Blatt3 SpalteO) │ (Blatt3 SpalteM) │ (Blatt3 SpalteR) │
───┼─────────────────┼────────────────┼─────────────────────┼─────────────────────┼──────────────────┼───────────────────┼────────────────────┤
25 │ │ │ │ │ (Blatt2 SpalteO) │ (Blatt2 SpalteM) │ (Blatt2 SpalteR) │
───┴─────────────────┴────────────────┴─────────────────────┴─────────────────────┴──────────────────┴───────────────────┴────────────────────┘

Tabellendarstellung erreicht mit dem Code in FAQ:2363
Gruß
Reinhard

In Klammern die Datenherkunft, die muss natürlich nicht auftauchen *g*. So und ich „muss“ jetzt wieder Feierabend machen.

(Offtopic:smiley:einen Beispielcode wie er aussehen könnte hab ich mir leider nur kurz anschauen können. Aber Teile davon hab ich immerhin schon mal verstanden :smile:. Um jetzt, davon ausgehend, weiter zu machen, langt es dann allerdings doch nicht.
Immerhin hab ich es aber geschafft Deinen Code zum Übernehmen der Tabellen in www auch unter meinem Excel 2007 lauffähig zu bekommen. Bis ich allerdings rausgefunden habe, wie man auf die Microsoft Forms 2.0 Object Library verweisen kann, war die Hälfte der „mir zustehenden“ Zeit schon rum ^^. Ich glaub ich muss mir da doch mal etwas Lektüre gönnen, damit so etwas schneller geht das nächste Mal.)

Ich hoffe Du kannst damit schonmal was anfangen. Ansonsten morgen (hoffe ich) dann mehr.

Danke schonmal
Grüße
Karl