inhalt der Zelle mit Mid abfragen?!
Hallo Community
Ich habe jeweils 1 Spalte in 2 Tabellen die ich vergleichen möchte.
Problem ist dass die Zellen in Tabelle 2 ein anderes Format haben.
z.B.
Tabelle1 ---> Spalte A --> A 111.222
Tabelle2 ---> Spalte C ---> 111222
In einer For-Schleife (bzw. 2 For-Schleifen) möchte ich die Länge des Zelleninhalts abfragen und mit Mid die Zellen der SpalteC auseinandernehmen und Blockweise mit Spalte A vergleichen?
Bsp:
SpalteA 111 mit SpalteC 111 und genauso 222 mit 222
Eckdaten:
2 Worksheets Ws1 und Ws2
Letzte1 ist der Range für Ws1
Letzte2 ist für Ws2
For i = 3 To Letzte1
For j = 26 To Letzte2
If Len("Ws2.Cells(j, 6)") = 6 And (Mid("Ws1.Cells(i, 3)", 3, 3) = Mid("ws2.cells(j,6)", 0, 3)) Then
Ws2.Cells(j, 6).Interior.ColorIndex = 19
End If
Next j
Next i
Ich kriegs irgendwie net hin habe nen Syntax-Fehler in der Zeile "if Len..." denke ich!
Danke im Voraus
mfg
Antwort schreiben
Antwort 1 von afemi vom 18.07.2019, 15:54 Options
ich weiss nicht, ob das der einzige fehler ist, aber du musst die anführungszeichen weglassen! du willst ja die länge des zelleninhalts und nicht die länge des zellennamens.
Antwort 2 von kicia vom 19.07.2019, 06:19 Options
Ich bin mir nicht ganz sicher, aber ich glaube, daß in VBA beim MID-Befehl der Index mit 1 beginnt und nicht mit 0.
Das würde heißen:
mid("111222", 1, 3) = "111"
mid("111222", 4, 3) = "222"
mid("111.222", 1, 3) = "111"
mid("111.222", 5, 3) = "222"
Antwort 3 von afemi vom 19.07.2019, 07:26 Options
du vermutest richtig, kicia!
Antwort 4 von Delirium vom 19.07.2019, 08:11 Options
so funktionierts..:)
If Len(Ws2.Cells(J, 6)) = 6 And (Mid(Ws1.Cells(I, 3), 3, 3) = Left(Ws2.Cells(J, 6), 3)) And (Mid(Ws1.Cells(I, 3), 6, 3) = Right(Ws2.Cells(J, 6), 3)) Then
Antwort 5 von nighty vom 21.07.2019, 19:31 Options
hi all :-)
glaub ich eher nicht :-))
(Mid(Ws1.Cells(I, 3), 3, 3)
drei klammern auf ,zwei klammern zu :-))
die erste klammer sollte weggelassen werden
gruss nighty