2つの頂点(サーバー)間の関係を決定する2列のスプレッドシートがあります。残念ながら、列が多すぎるので、エントリA、B、B、Aがあります。私はそれらの余分なエントリを取り除く必要があります。誰かが機能を提供することはできますか?VBAは無向グラフを作成します
例:
が分離されるべき出力を好むだろうが、それは同じ入力列を修正した場合、それは大丈夫です。
2つの頂点(サーバー)間の関係を決定する2列のスプレッドシートがあります。残念ながら、列が多すぎるので、エントリA、B、B、Aがあります。私はそれらの余分なエントリを取り除く必要があります。誰かが機能を提供することはできますか?VBAは無向グラフを作成します
例:
が分離されるべき出力を好むだろうが、それは同じ入力列を修正した場合、それは大丈夫です。
この質問に答えることで、基本的なことを理解し、次回の半分の作業の解決策を考え出すための出発点またはアイデアが得られれば幸いです。 VBAなし
:
あなたは文字列を比較することができます。セルD2 - >=IF(A2<B2,A2,B2)
では、2文字のうちアルファベットの最初の文字が表示されます。同じことが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
ありがとうございます! :) –