Ok, see if this works for you. I assumed the data is in Columns A-D and that Column E is free to be used for some temporary data.
Option Explicit
Dim Title As String
Private Sub TreeView1_DblClick()
Me.Caption = Title
End Sub
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Title = Node.Text
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
Dim LastRow As Long
Dim Val1 As String
Dim xNode As Node
Dim NodeKey As String
LastRow = Sheets("Sheet1").Range("A65536").End(xlUp).Row
With Me.TreeView1
For i = 2 To LastRow
Val1 = Sheets("Sheet1").Range("A" & i).Text
If Application.WorksheetFunction.CountIf( _
Sheets("Sheet1").Range("A1:A" & i), Val1) = 1 Then
Set xNode = .Nodes.Add
NodeKey = Val1
With xNode
.Key = NodeKey
.Text = Val1
.Expanded = False
End With
End If
Next i
For i = 2 To LastRow
Sheets("Sheet1").Range("E" & i).Value = _
Sheets("Sheet1").Range("A" & i).Value & "@@@" & _
Sheets("Sheet1").Range("C" & i).Value
Next i
For i = 2 To LastRow
Val1 = Sheets("Sheet1").Range("A" & i).Text
If Application.WorksheetFunction.CountIf( _
Sheets("Sheet1").Range("E1:E" & i), _
Sheets("Sheet1").Range("E" & i).Text) = 1 Then
Set xNode = .Nodes.Add(Val1, tvwChild)
NodeKey = Sheets("Sheet1").Range("E" & i).Text
With xNode
.Key = NodeKey
.Text = Sheets("Sheet1").Range("C" & i).Text
End With
End If
Next i
End With
Sheets("Sheet1").Range("E:E").ClearContents
Set xNode = Nothing
End Sub