2017-05-02 9 views
-2

2 개의 꼭지점 (서버) 간의 관계를 나타내는 2 열의 스프레드 시트가 있습니다. 불행히도 열이 너무 많아 항목 A, B 및 B, A가 있습니다. 중복 된 항목을 제거해야합니다. 누군가 제발 기능을 제공 할 수 있습니까?VBA는 방향성이없는 그래프를 만듭니다.

예 :

enter image description here

분리되는 출력 선호하지만 동일한 입력 항목을 수정하는 경우는 OK이다.

답변

1

이 질문에 대답함으로써, 기본 사항을 이해하고 다음 번에 귀하의 절반 업무 해결책을 제시하는 출발점 또는 아이디어를 얻길 바랍니다. VBA없이

:

당신은 문자열을 비교할 수 있습니다. 셀 D2에서 ->=IF(A2<B2,A2,B2)은 두 글자 중 첫 글자를 알파벳으로 표시합니다. 같은 일이 E2 ->=IF(A2<B2,B2,A2)으로 이동합니다. 이 수식을 끝까지 복사 한 다음 값으로 복사/붙여 넣기를 한 다음 데이터 리본에서 중복을 제거합니다. VBA를 사용

:

당신은 다시 비교를 사용하여 문자 순서를 변경할 수 있습니다, 다음 사이에서 혼수 상태로을 연결. 그런 다음 사전에 존재하는지 확인하고 사전에없는 경우 사전에 추가하십시오. 프로세스의 워크 시트 셀에 내용을 쓰거나 나중에 사전에서 추출 할 수 있습니다.

Sub removeDub() 
Dim dict As Object 
Set dict = CreateObject("Scripting.Dictionary") 
Dim i As Long 
Dim s1, s2 As String 
'Dim a() As String 

With Sheets("Sheet1") 
For i = 2 To .Range("A1").End(xlDown).Row 
    If Cells(i, 1).Value < Cells(i, 2).Value Then 
     s1 = .Cells(i, 1).Value 
     s2 = .Cells(i, 2).Value 
    Else 
     s1 = .Cells(i, 2).Value 
     s2 = .Cells(i, 1).Value 
    End If 

    If Not dict.Exists(s1 & "," & s2) Then 
     dict.Add s1 & "," & s2, 1 
     .Range("D" & .Cells.Rows.Count).End(xlUp).Offset(1) = s1 
     .Range("E" & .Cells.Rows.Count).End(xlUp).Offset(1) = s2 
    End If 
Next i 

'For Each Key In dict.Keys 
' a = Split(Key, ",") 
' .Range("D" & .Cells.Rows.Count).End(xlUp).Offset(1) = a(0) 
' .Range("E" & .Cells.Rows.Count).End(xlUp).Offset(1) = a(1) 
'Next Key 
End With 

End Sub 
+0

정말 고마워요! :) –