Abgleich Strings, Teilsprings in 2 Arr
15.11.2021 15:46:27
Robert
ich muß 2 Spalten (Daten ALT und Daten NEU) mit Artikelnamen (Strings) in den Zellen/Zeilen vergleichen. Diese Artikelnamen bestehen wiederum aus bis zu 8 Teilstrings in den Zellen.
Artikelnamen in der einen und in der anderen Spalte stimmen überein, wenn diese Strings identisch sind. So weit komme ich als VBA-Anfänger mit der Hilfe von Boris hier im Forum damit zurecht.
Nun sollen aber auch solche Einträge in den Spalten (Daten ALT und Daten NEU) als identisch gelten, bei denen die Reihenfolge der Teilstrings unterschiedlich ist, aber die Anzahl und die Teilstrings selbst übereinstimmen. Nur ist die Reihenfolge eben anders.
Um dies zu erreichen habe ich die beiden Spalten mit Hilfe der Split-Fkt. In zwei Arrays gespielt. Spätestens bei dem Abgleich sind meine VBA-Kenntnisse am Ende. Ich würde mich wahnsinnig über Hilfe freuen.
Ich verlinke auch zu dem vorherigen Thread. https://www.herber.de/forum/messages/1856769.html
Mit einen riesigem Danke im Voraus
Robert
https://www.herber.de/bbs/user/149156.xlsb
Mein Code bisher:
Sub ZweiArraysAbgleichen()
Tabelle3.Activate
'***** 1. Array Daten ALT
Dim ZelleALT As String
Dim splitStringALT() As String
Dim myDataArrayALT(1 To 20, 1 To 9) As String
Dim iALT As Integer, jALT As Integer
Dim laRowALT As Integer
laRowALT = Range("A1", Range("A2").End(xlDown)).Rows.Count
' 'Split strings to arrayALT including TRIM and CLEAN functions
For iALT = 1 To laRowALT
ZelleALT = WorksheetFunction.Clean(WorksheetFunction.Trim(Range("A" & iALT + 1).Value2))
splitStringALT = Split(ZelleALT, " ")
For jALT = 0 To UBound(splitStringALT)
myDataArrayALT(iALT, jALT + 1) = splitStringALT(jALT)
Next
Next
'***** 2. Array Daten NEU
Dim ZelleNEU As String
Dim splitStringNEU() As String
Dim myDataArrayNEU(1 To 4, 1 To 9) As String
Dim iNEU As Integer, jNEU As Integer
Dim laRowNEU As Integer
laRowNEU = Range("D1", Range("D2").End(xlDown)).Rows.Count
'Split strings to arrayNEU including TRIM and CLEAN functions
For iNEU = 1 To laRowNEU
ZelleNEU = WorksheetFunction.Clean(WorksheetFunction.Trim(Range("D" & iNEU + 1).Value2))
splitStringNEU = Split(ZelleNEU, " ")
For jNEU = 0 To UBound(splitStringNEU)
myDataArrayNEU(iNEU, jNEU + 1) = splitStringNEU(jNEU)
Next
Next
'**** Hier sollte nun der Abgleich erfolgen und in Spalte B und oder E eine Meldung erfolgen, _
aehnlich der bestehenden Anmerkungen in Spalte F ob der Artikelname _
aus D (2. Array Daten NEU) in A (1. Array Daten ALT) gefunden wurde.
End Sub