Mein Freund hat zwei Spalten, von denen eine eindeutige Werte hat und eine andere Spalte dieselben Werte hat, aber auch dupliziert, wie unten gezeigt
Column 1 Column 2
ABC123 ABC123
CDE456 ABC123
EFG789 ABC123
ABC123
CDE456
CDE456
CDE456
EFG789
Manchmal sind in Spalte 2 nicht alle Werte vorhanden. In diesem Fall muss meiner Meinung nach einfach klargestellt werden, dass sie in Spalte 2 nicht vorhanden sind. Er möchte, dass die Werte in Spalte 1 in die Zeilennummer mit demselben Wert in der Spalte mit den doppelten Werten verschoben werden, wie unten gezeigt.
Column 1 Column 2
ABC123 ABC123
ABC123
ABC123
ABC123
CDE456 CDE456
CDE456
CDE456
EFG789 EFG789
Gibt es eine Möglichkeit, dies in Excel problemlos mit einem Makro oder einer internen Excel-Funktion zu tun?
Antwort1
Dies entspricht Ihren Fragen.
Sub ShowStartingPoints()
Dim rowA As Integer
rowA = 1
Do While (Range("A" & rowA).Value <> "")
Dim row As Integer
row = 1
Dim doesValueExitInB As Boolean
doesValueExitInB = False
Dim valueA As String
valueA = Range("A" & rowA).Value
Do While (Range("B" & row).Value <> "")
If (valueA = Range("B" & row).Value) Then
Range("A" & rowA).Value = ""
Range("A" & row).Value = valueA
doesValueExitInB = True
Exit Do
End If
row = row + 1
Loop 'Loops B col
If Not doesValueExitInB Then
Range("C" & rowA) = Range("A" & rowA)
Range("A" & rowA) = ""
Range("C" & rowA).Interior.ColorIndex = 3
End If
rowA = rowA + 1
Loop ' loops A col
End Sub
Vor dem Makro
Nach dem Makro
Dies wird Probleme mit sich bringen, die in Ihrem Beispiel nicht berücksichtigt werden. Wenn Sie in Spalte A eine lange Liste haben, wie ich gezeigt habe, werden Sie Daten überschreiben, weil ein Wert einen anderen Wert ersetzt!
Beachten Sie, dass A5 im ersten Screenshot den Wert Nr. hat. Dies ist auch die Stelle, an der CDE456 in B5 beginnt. Wir prüfen also, wo der Wert von A3 in Spalte B beginnt. CDE456 in Spalte B beginnt in Zeile 5 und wird daher nach A5 verschoben (gemäß Ihrer Anfrage in Ihrer Frage) ... Kaboom, wir haben gerade einen Wert überschrieben. Ihre Frage erwähnt dies jedoch nicht, daher gehe ich davon aus, dass dies kein Problem ist (außerdem können Sie den Code immer einfach an Ihre Bedürfnisse anpassen).