Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1044to1048
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2 Sheets & 2 Spalten vergleichen

2 Sheets & 2 Spalten vergleichen
29.01.2009 10:29:17
Alex
Guten Morgen zusammen!
Ich sitze an folgendem Problem:
Ich habe zwei Sheets, in denen Kunden (dummerweise) sehr inkonsistent gespeichert werden. Aus diesem Grunde vergleiche ich die beiden relevanten Spalten nach übereinstimmenden Strings und versuche, zumindest einen Teil dieser Kunden zu identifzieren und entsprechend zuzuweisen. Das klappt bisher auch ganz gut.
Die Methode, die ich anwende, ist die folgende: Zuerst lese ich alle Zellen des Sheets X in ein Array ein:
Dim Arr()
Dim A As Variant
Dim i As Long
For i = 0 To 1000
A = A + 1
ReDim Preserve Arr(A)
Arr(A) = Cells(i, 2)
Next

Dann versuche ich - durch Prüfung aller Werte in diesem Array per For Each...Next Schleife - einen korrespondierenden Wert für alle Zellen der relevanten Spalte auf Sheet Z zu erhalten. Ich wende hier ein Range-Argument an:
Dim rngC As Range
For Each rngC In Selection.Cells
With rngC ' Variablen aus Sheet Z
String1 = .Offset(0, -10)
String2 = .Offset(0, -9)
String3 = .Offset(0, -8)
Land = .Offset(0, -7)
End With
For Each A In Arr
'Prüfung der Strings...
If A Like... Then
rngC = XXX
Exit For
ElseIf...
End If
Next
Next rngC

Tatsächlich bekomme ich relativ gute Werte heraus. Jetzt gibt es aber noch das folgende Problem, dass auf Sheet X Werte in ähnlicher Form mehrfach vorkommen können... Um nicht nur den ersten (aus mehreren möglichen) Kunden zu wählen, benötige ich eine weitere Suchbedingung. Aus diesem Grund habe ich mir überlegt, die Herkunftsländer der Kunden als zusätzliches Kriterium heranzuziehen und danach ebenfalls zu selektieren... Hier habe ich leider den Durchblick dann verloren ;-)
Mein Ansatz ist, dass ich zu Beginn auch für die Länder ein Array (B in Brr) laufen lasse, allerdings mit gleicher Laufvariable (oder mit anderer Laufvariable, dann aber mit Gleichsetzung, bspw. durch i = j):
Dim Brr()
Dim B As Variant
Dim i As Long
For i = 0 To 1000
B = B + 1
ReDim Preserve Brr(B)
Brr(B) = Cells(i, 6)
Next

Um B entsprechend ausgeben zu lassen, habe ich eine If-Bedigung eingefügt, die prüfen soll, ob der Kunde von Sheet X aus dem gleichen Land kommt wie der möglicherweise zutreffende Kunde von Sheet Z. Das sieht dann so aus (Abänderung der obigen For Each...Next Schleife...):
For Each A In Arr
'Prüfung der Strings...
If A Like... Then
If B = Land Then
rngC = A
rngC.Offset(0,1) = Land
Exit For
Else
rngC = A
rngC.Offset(0,1) = B
End If
ElseIf...
End If
Next

Meine Interpretation ist, dass doch bei gleicher Laufvariable der Index für A und B immer gleich sein muss und ich dann - gegeben i für A - den Wert aus B direkt ausgeben lassen und mit dem Länderwert aus Sheet Z vergleichen kann, bevor ich ihn übernehme, oder?
Blöderweise wird aber dann immer nur ein statisches "1001" in der betreffenden Zeile ausgegeben und nicht der korrekte Wert selbst...
Meine Frage: Wie kann ich es erreichen, dass das Array Brr immer mit dem Array Arr mitläuft und bei erfolgreicher Suche eines zutreffenden Kunden abgeglichen wird, ob die Länder der beiden Datensätze auch übereinstimmen, bevor ich die Werte in das Datenfeld eintragen lasse oder weitergesucht werden soll?
Vielen Dank im Voraus...
Gruss,
Alex

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Sheets & 2 Spalten vergleichen
02.02.2009 10:38:00
fcs
Hallo Alex,
wenn du den Index zweier gleich großer Arrays synchronisieren willst, dann benutzt du am besten einen Zähler der das Array durchläuft.
Gruß
Franz

Sub TestA()
Dim lngJ As Long, Arr(), Brr()
For lngJ = LBound(Arr) To UBound(Arr)
'Prüfung der Strings...
If Arr(lngJ) Like... Then
If Brr(lngJ) = Land Then
rngC = Arr(lngJ)
rngC.Offset(0, 1) = Land
Exit For
Else
rngC = Arr(lngJ)
rngC.Offset(0, 1) = Brr(lngJ)
End If
ElseIf...
End If
Next
End Sub


AW: 2 Sheets & 2 Spalten vergleichen
02.02.2009 14:07:00
Alex
Hallo Franz,
vielen Dank für die hilfreiche Antwort, so sollte ich es hinbekommen... Wie würdest Du denn dann den Arrays die zutreffenden Werte zuordnen? Immer noch nach meinem obigen Muster? Ich meine, zunächst muss ich sie ja gefüllt haben, bevor verglichen werden kann ;-)
Wäre spitze, wenn Du das noch kurz anreißen würdest.
Vielen Dank und Gruß,
Alex
Anzeige
AW: 2 Sheets & 2 Spalten vergleichen
02.02.2009 15:22:48
Alex
Ich bin's nochmal... habe diesbezüglich das Problem selbst gelöst und dem Grunde nach Ursprüngliches mit kleineren Modifikationen belassen - trotzdem herzlichen Dank.
Viele Grüße,
Alex

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige