Hallo Zusammen,
Ich benötige eure Hilfe zu einem Datenerfassungstool das ich mir zusammengebastelt habe und es mir ermöglicht Zeiten (hh:mm) aus sehr vielen geschlossenen Dateien auszulesen. Die gesuchten Werte stehen IMMER in den selben Spalten aber in immer unterschiedlichen Zeilen.
Um das Vorweg zu nehmen, nein ich kann die Datenstruktur der zu lesenden Dateien leider nicht beeinflussen und nein, die Dateien händisch aufzumachen ist leider auch keine Option. Ich bin aber, aufgrund meiner Recherchen, optimistisch, dass es auch so geht. Die Frage ist nur wie?
Ich habe selbst ein wenig versucht und bin auf diverse Lösungsansätze gestoßen, im Einzelnen alles Bruchstücke die meinen Anforderungen entsprechen (zum Beispiel das Aufrufen geschlossener Dateien, oder das Suchen eines bestimmten Wertes mit Rückgabe der Zeilenposition, etc.)
https://www.herber.de/mailing/Vorkommen_eines_Wortes_in_Arbeitsmappen_eines_Verzeichnisse.htm
https://www.herber.de/forum/archiv/1136to1140/1138051_Per_VBA_suchen_Ergebniszeile_ausgeben.html
.....etc.
Leider bin ich in VBA aber nicht Firm genug um diese zu einem Funktionierenden Stück Code zusammenzusetzen, hier hoffe ich auf eure Hilfe/Expertise.
Das Auslesen der einzelnen Zeiten (immer in Spalte G) geschieht über die SVERWEIS Funktion, die Pfade und Dateinamen werden mit einem separaten Makro ausgelesen und in der SpalteA aufgelistet, beginnend ab Zeile 3. Es gibt jeweils zwei Suchkriterien, diese Stehen ab SpalteB (bis XX) in den Zeilen1 und 2.
Jedes Suchkriterium für sich kann bereits über die SVERWEIS Funktion abgerufen werden, das funktioniert. Also wenn ein Wert in Zeile eins, suche in Zieldatei in SpalteA, wenn wert in Zeile2, suche in Zieldatei in Spalte B, soweit so gut. (Auch wenn ich es schöner fände wenn die Entscheidung welche Formel zum Zuge kommt bereits im Modul fallen würde und nur die anzuwendende Formel in die Zelle geschrieben wird, das bekomme ich mit viel rumprobieren aber vermutlich auch alleine hin)
Range(Cells(LRow, 2), Cells(LRow, LCol)).Formula = _
"=IF(B$2="""",VLOOKUP(B$1 & ""*"",'" & sPath & _
"[" & sFile & "]" & sWks & "'!$A1:I9999,7,0), VLOOKUP(B$2 & ""*"",'" & _
sPath & "[" & sFile & "]" & sWks & "'!$B1:I9999,6,0))"
Nun wäre die Aufgabenstellung den Suchbereich für den Wert aus Zeile2 in Abhängigkeit von dem Ergebnis aus einer Abfrage in Zeile1 zu machen (wenn dort etwas drinsteht).Als Beispiel:
A B C D
1 Maschine1 Maschine2 Maschine3
2 Zeit1 Zeit1
3 C:Test\Test.xls 00:00 00:00 00:00
Jetzt wird hoffentlich auch klar wöfür ich die Abhängikeit benötige, sagen wir in der Test.xls steht der Wert "Maschine1" in A376 und "Zeit1" in B377 und "Maschine2" in A690 und "Zeit1" in B691Hier würde mit meiner aktuellen Abfrage bei Maschine2 die Zeit von Maschine1 stehen, deshalb würde ich gerne zuerst nach der Position von "Maschine2" suchen und diese dann als Startwert für die Matrixabfrage nach Zeit1 nehmen.
B3 = SVERWEIS(B2;'C:\Test\[Test.xls]Tabelle1'!$B376:I9999;6;0)
C3 = SVERWEIS(C2;'C:\Test\[Test.xls]Tabelle1'!$B690:I9999;6;0)
D3 = SVERWEIS(D1;'C:\Test\[Test.xls]Tabelle1'!$A1:I9999;7;0)
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt, kann, wenn nötig auch gerne eine Beispieldatei präparieren (das Original ist natürlich ein wenig komplexer und arbeitet mit anderen Zellbezügen)
Bin gespannt auf euren Input
Danke