내 친구는 하나는 고유한 값을 갖고 다른 하나는 동일한 값을 가지지만 아래와 같이 중복되는 두 개의 열을 가지고 있습니다.
Column 1 Column 2
ABC123 ABC123
CDE456 ABC123
EFG789 ABC123
ABC123
CDE456
CDE456
CDE456
EFG789
때로는 열 2에 모든 값이 없는 경우도 있습니다. 이 경우 열 2에 해당 값이 존재하지 않는다는 점을 분명히 해야 한다고 생각합니다. 그가 원하는 것은 열 1의 값이 행 번호로 이동하기를 원하는 것입니다. 아래와 같이 중복 값 열에 동일한 값이 있습니다.
Column 1 Column 2
ABC123 ABC123
ABC123
ABC123
ABC123
CDE456 CDE456
CDE456
CDE456
EFG789 EFG789
매크로나 내부 Excel 기능을 사용하여 Excel에서 이 작업을 고통 없이 수행할 수 있는 방법이 있습니까?
답변1
이것은 귀하의 질문이 요청한 것입니다.
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
매크로 이전
매크로 이후
여기에는 귀하의 예가 적용되지 않는 문제가 있을 것입니다. 앞서 설명한 것처럼 A열에 긴 목록이 있는 경우 값이 다른 값을 대체하므로 데이터를 덮어쓰게 됩니다.
첫 번째 스크린샷에서 A5에는 No 값이 있습니다. 이는 CDE456이 B5에서 시작되는 곳이기도 합니다. 따라서 A3 값이 B열에서 시작하는 위치를 확인합니다. ColB의 CDE456은 5행에서 시작하여 A5로 이동합니다(귀하의 질문에 대한 요청에 따라)... Kaboom, 방금 값을 썼습니다. 그러나 귀하의 질문에는 이에 대한 언급이 없으므로 문제가 되지 않는다고 가정하겠습니다(또한 언제든지 필요에 맞게 코드를 조정할 수 있습니다).