shaggy84
Goto Top

String von Zelle zu vorherigen Zelle hinzu fügen

Hallo,

habe mnal wieder ein kleines VBA Problem. Es sollen zwei Zellen verglichen werden. Wenn die Folgezelle das gleiche enthält wird sie ignoriert und eh gelöscht. Wenn sie einen anderen Wert enthält, soll dieser bevor die Zeile gelöscht wird, zur ersteren Zelle hinzugefügt werden.

Direkt die Frage. Ich benutze hier <> in der dritten Zeile, wie lautet der Befehl für "Zelle enthält" bzw. "Zelle enthält nicht"? Sonst entstehen ja Duplikate, obwohl der String schon in der Zelle existiert... und mein Add Befehl funktioniert leider auch noch nicht...

Worksheets(1).Activate

Zeile = 1
Do While Cells(Zeile, 1).Value <> ""  

If Cells(Zeile, 2).Value <> Cells(Zeile + 1, 2).Value Then
    Cells(Zeile, 2).Add (Cells(Zeile + 1, 2).Value)
    Zeile = Zeile + 1
Else
    Zeile = Zeile + 1
End If
    
Loop

Grüße, Gregor

Content-Key: 83145

Url: https://administrator.de/contentid/83145

Printed on: April 19, 2024 at 17:04 o'clock

Member: bastla
bastla Mar 15, 2008 at 13:58:04 (UTC)
Goto Top
Hallo Shaggy84!

Das sollte etwa so gehen:
...
If Not InStr(1, Cells(Zeile, 2).Value, Cells(Zeile + 1, 2).Value, vbTextCompare) Then
    Cells(Zeile, 2).Add (Cells(Zeile + 1, 2).Value)
...
Das "VbTextCompare" sorgt dafür, dass Unterschiede hinsichtlich Groß-/Kleinschreibung ignoriert werden - wenn Du einen genauen Vergleich willst, einfach weglassen.

Grüße
bastla
Member: Shaggy84
Shaggy84 Mar 17, 2008 at 07:41:37 (UTC)
Goto Top
Hallo bastla,

deine erste Zeile funktioniert soweit gut. Aber meine zweite die hier auch steht funktioniert leider nicht. Als Fehlermeldung bekomme ich "Objekt unterstützt diese Eigenschaft oder Methode nicht" (wie so oft ;) )

War der Ansatz mit dem .Add richtig oder gibts dafür was anderes? Kann man noch einen "/" zwischen zwei Werte setzen?

Grüße, Gregor
Member: bastla
bastla Mar 17, 2008 at 08:18:05 (UTC)
Goto Top
Hallo Shaggy84!

Um die beiden Strings miteinander zu verbinden, wird in VB "&" verwendet, daher:
If Not InStr(1, Cells(Zeile, 2).Value, Cells(Zeile + 1, 2).Value, vbTextCompare) Then
    Cells(Zeile, 2).Value = Cells(Zeile, 2).Value & "/" & Cells(Zeile + 1, 2).Value  

Grüße
bastla
Member: Shaggy84
Shaggy84 Mar 17, 2008 at 12:38:48 (UTC)
Goto Top
Hallo bastla,

des funktioniert soweit leider nur halb. Er schreibt mir die Werte trotzdem noch doppelt in die Zelle, obwohl ich deinen Programmcode ebenfalls so verstehe, dass er funktionieren müsst. Vergleicht er vielleicht immer nur den gesamten String oder auch Teilwerte des Strings?!

Als Ergebnis bekomme ich im moment noch Wert1/Wert1/Wert2/Wert1/Wert2 usw. anstatt Wert1/Wert2

Grüße
Member: bastla
bastla Mar 17, 2008 at 13:11:22 (UTC)
Goto Top
Hallo Shaggy84!

Andere Schreibweise:
If InStr(1, Cells(Zeile, 2).Value, Cells(Zeile + 1, 2).Value, vbTextCompare) = 0 Then
    Cells(Zeile, 2).Value = Cells(Zeile, 2).Value & "/" & Cells(Zeile + 1, 2).Value  

Grüße
bastla
Member: Shaggy84
Shaggy84 Mar 18, 2008 at 09:36:49 (UTC)
Goto Top
Hey bastla,

funktioniert soweit wunderbar. Die Verneinung im Code mit "Not" und dann mit "=0" am Anfang, glaub da wäre ich auf letzteres nie gekommen.

Vielen Dank nochmals! Gibt's diesmal nen Martini °>-0
Member: bastla
bastla Mar 18, 2008 at 09:45:04 (UTC)
Goto Top
Hallo Shaggy84!

Gibt's diesmal nen Martini °>-0
Bevor Du Deine ganze (virtuelle) Hausbar über mir entleerst face-wink: So ziemlich die einzige Form von Alk, die ich zu mir nehme, ist Rum (und den nur in einem Kuchen) - aber trotzdem danke. face-smile

Grüße
bastla