Hallo Max,
freut mich, dass der Code auch in deiner Echtdatei klappt.
Zur Erklärung:
Die Daten, die gesucht werden sollen werden in ein Array (=Feld) eingelesen, ebenso die Daten aus der Tabelle, in der gesucht werden soll (jeweils ohne Überschriften).
Der Codeteil, den du gepostet hast, vergleicht nun die Daten aus den einzelnen Arrays. Mit der Schleife werden die ganzen Daten vom 1. Datensatz bis zum letzten Datensatz (praktisch die jeweiligen Zeilen und Spalten) durchlaufen und auf Übereinstimmungen untersucht. Die Daten der beiden Felder wurden so eingelesen, dass die Spalte A der 1. Spalte des jeweiligen Feldes entspricht. Die Adressierung im Array sieht im Prinzip so aus: varDaten(Zeile,Spalte).
Dieser Codeteil sucht somit die Übereinstimmung bei dem Produkt
If varDaten(d, 1) = varSuch(z, 1) Then
falls es hier eine Übereinstimmung gibt, dann wird geprüft ob die Hitze stimmt (liegt diese im entsprechenden Bereich?)
If varSuch(z, 2) >= varDaten(d, 2) And varSuch(z, 2) <= varDaten(d, 3) Then
und falls das auch passt, wird das andere Produkt auf Übereinstimmung geprüft
If varDaten(d, 4) = varSuch(z, 3) Then
und auch hier wird natürlich noch einmal die Hitze überprüft, wenn das andere Produkt richtig ist
If varSuch(z, 4) >= varDaten(d, 5) And varSuch(z, 4) <= varDaten(d, 6) Then Exit For
Passt das alles, wird die Schleife verlassen (mit Exit For).
Damit steht in der Variable d die Position (Zeile), in der sich die gesuchten Daten befinden. Da sich das alles im Arbeitsspeicher abspielt, sind keine Zugriffe auf die Festplatte nötig, was zur Schnelligkeit des Codes beiträgt.
Nun wird nur noch überprüft, in welcher Spalte sich die Überschrift befindet, die der gesuchten Serviceleistung entspricht (hier wird allerdings auf die Festplatte zugegriffen). Dies geschieht hiermit:
For s = 5 To UBound(varDaten, 2)
If varSuch(z, 5) = wksDaten.Cells(1, s) Then .Cells(1 + z, 6) = varDaten(d, s)
Next s
Ist diese Position gefunden, dann hast du auch die gesuchte Information gefunden. Das kannst du dir wie Längen- und Breitengrade vorstellen. Die Kombination aus Längen- und Breitengrad gibt dir eine genaue Position an.
Gruß
M.O.