Realmente esse arquivo é uma zona, mas se não tem jeito, vamos lá.
Acredito que a melhor coisa seria fazer como eu disse no outro posto, usar dois vetores. Eu gosto de usar vetores, pois são mais rápidos e economizam memória, mas se você preferir pode usar uma collection com classes personalizadas.
Você pode criar dois vetores para conter os dados de cada tipo de registro, um para os tipos 1 e outro para os tipos 3.
Dim Vet1() As String, Vet3() As String
Dim Max1 As Integer, Max3 As Integer, Cont1 As Integer, Cont3 As Integer
Dim Linha As String, Linha2 As String
Open <Seu Arquivo> For Input As #1
Max1 = -1
Max3 = -1
Do While Not EOF(1)
Linha = ""
Line Input #1, Linha
If Left$(Trim(Linha), 1) = "1" Then
Max1 = Max1 + 1
ReDim Preserve Vet1(Max1)
Vet1(Max1) = Linha
Else
Max3 = Max3 + 1
ReDim Preserve Vet3(Max3)
Vet3(Max3) = Linha
End If
Loop
Close #1
Open "C:Resultado.txt" For Output As #2
For Cont1 = 0 To Max1
Linha2 = Vet1(Cont1)
For Cont3 = 0 To Max3
If Right(Vet1(Cont1), 3) = Mid$(Vet3(Cont3), 4, 3) Then
Linha2 = Linha2 & ";" & Mid$(Vet3(Cont3), 2)
End If
Next
Print #2, Linha2
Next
Close #2
Isso vai criar um arquivo chamado resultado.txt que deverá estar no formato que você quer.
Sandro