Вот код скелета для этой цели, может быть изменен по вашему требованию. Считать входной текстовый файл фиксированной шириной с несколькими пробелами. Проверено на примере предоставленных данных. Структура выходной таблицы была изменена для простоты следующим образом.
![enter image description here](https://i.stack.imgur.com/cADJ6.jpg)
Код напрямую обрабатывает текстовый файл
Sub test()
Dim Fno As Integer, Ln As String, Arr As Variant
Dim TestNo As String, TestID As String, Wheel As String
Dim Rw As Long
Dim Ws As Worksheet
Dim MyFile As Variant
Set Ws = ThisWorkbook.ActiveSheet
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Filters.Add "Text", "*.Txt", 1
If .Show <> -1 Then Exit Sub
Rw = 6
For Each MyFile In .SelectedItems
Fno = FreeFile
Open MyFile For Input As #Fno
TestID = ""
TestNo = ""
Wheel = ""
Do While Not EOF(Fno) ' Loop until end of file.
Line Input #Fno, Ln ' Read line into variable.
Ln = Trim(Ln)
' multiple spaces are converted to single space for splitting
Do Until InStr(1, Ln, " ") = 0
Ln = Replace(Ln, " ", " ")
Arr = Split(Ln, " ")
Loop
If UBound(Arr) > 2 Then
Select Case Arr(1)
Case "5000" 'TestNo
If TestID <> Arr(0) Or TestNo <> Arr(UBound(Arr)) Then
Rw = Rw + 1
TestID = Arr(0)
TestNo = Arr(UBound(Arr))
Ws.Cells(Rw, 1).Value = TestID
Ws.Cells(Rw, 2).Value = TestNo
End If
Case "5005" 'Distance
Ws.Cells(Rw, 3).Value = Arr(UBound(Arr) - 1)
Case "5006" 'Start Hr
Ws.Cells(Rw, 4).Value = Arr(UBound(Arr) - 1)
Case "5007" 'Start min
Ws.Cells(Rw, 5).Value = Arr(UBound(Arr) - 1)
Case "5008" 'Wheel
Wheel = Arr(UBound(Arr))
Ws.Cells(Rw, 6).Value = Arr(UBound(Arr))
Case "5009" 'WetDry
Ws.Cells(Rw, 7).Value = Arr(UBound(Arr))
Case "5010" 'Lat
Ws.Cells(Rw, 14).Value = Arr(UBound(Arr) - 1) & " " & Arr(UBound(Arr))
Case "5011" 'Long
Ws.Cells(Rw, 15).Value = Arr(UBound(Arr) - 1) & " " & Arr(UBound(Arr))
Case "6001" 'Surface Temp
Ws.Cells(Rw, 13).Value = Arr(UBound(Arr) - 1)
End Select
If Wheel = "Right" Then
Select Case Arr(1)
Case "6060" 'SN Average
Ws.Cells(Rw, 9).Value = Arr(UBound(Arr) - 1)
Case "6061" 'SN Min
Ws.Cells(Rw, 10).Value = Arr(UBound(Arr) - 1)
Case "6062" 'SN MAx
Ws.Cells(Rw, 11).Value = Arr(UBound(Arr) - 1)
Case "6063" 'SN St Dev
Ws.Cells(Rw, 12).Value = Arr(UBound(Arr) - 1)
Case "6064" 'Speed Avg
Ws.Cells(Rw, 8).Value = Arr(UBound(Arr) - 1)
End Select
Else
Select Case Arr(1)
Case "6080" 'SN Average
Ws.Cells(Rw, 9).Value = Arr(UBound(Arr) - 1)
Case "6081" 'SN Min
Ws.Cells(Rw, 10).Value = Arr(UBound(Arr) - 1)
Case "6082" 'SN MAx
Ws.Cells(Rw, 11).Value = Arr(UBound(Arr) - 1)
Case "6083" 'SN St Dev
Ws.Cells(Rw, 12).Value = Arr(UBound(Arr) - 1)
Case "6084" 'Speed Avg
Ws.Cells(Rw, 8).Value = Arr(UBound(Arr) - 1)
End Select
End If
End If
Loop
Close #Fno
Next MyFile
End With
End Sub