als Neuling möchte ich mich erstmal bei allen bedanken, die in den Foren dieser Welt ihr geheimes Druidenwissen mit Allen teilen. Ich habe in den letzten Jahren sehr viel lernen können.
Nun habe ich aber ein Problem bei dem ich mir seit 2 Tagen die Finger wund suche und teste.
Folgende Ausgangssituation:
PCs mit Windows 7 oder 10, Office 2010 oder 2016.
Ich will Daten-Tabellen mit bis zu 50Mio 3-stelligen Strings mit einer Vergleichstabelle korrellieren. Die String sind alphanumerisch, d.h. sie können die Form 5HT, J8T usw. haben. Ich schreibe immer eine Anzahl von um die 180 Strings in ein ein String-Array (ergibt sich aus dem Aufbau der Daten-Tabelle). Den Abgleich mache ich bisher über eine SQL-Abfrage, hab aber hier -> https://analystcave.com/excel-vlookup-vs-index-match-vs-sql-performance/
Dim arrPRno(), arrFamilies() as String
Dim x, a as Long
Dim result as String
For x = 2 To myWks.Range("M:M").End(xlDown).Row
' Zellinhalt der Daten-Tabelle wird aufgeteilt und in Array geschrieben
arrPRno = Split(Trim(UCase(myWks.Cells(x, 13).Value)), Trennzeichen)
For a = LBound(arrPRno) To UBound(arrPRno)
If Application.VLookup(arrPRno(a), _
myWbk.Worksheets("Familien").Range("A1:A400").Value, 1, True) = arrPRno(a) Then
result = Application.VLookup(arrPRno(a), _
myWbk.Worksheets("Familien").Range("A2:B400"), 2, True)
' Falls der Wert noch nicht vorhanden ist, wird er weggeschrieben
If UBound(Filter(arrFamilies, result, True, vbTextCompare)) = -1 Then
arrFamilies(UBound(arrFamilies)) = result
ReDim Preserve arrFamilies(UBound(arrFamilies) + 1)
End If
End If
Next a
ReDim Preserve arrFamilies(UBound(arrFamilies) - 1)
Next x
Ich hoffe, jemand kann mir weiterhelfen.Vielen Dank schon mal für eure Mühe!
Beste Grüße
der Jörn