If I understand your problem correctly, you're trying to pull the "Petrol" or "Diesel" and put those in the second column, "LCV" or "Passenger Car" for the third column, and "Manual" and "Automatic" in the third column. If that is the case, then you could loop until the last value to go through everything, and then you could use the InStr value to see if the value is in the string, like they did here.
Sub CheckEntries()
Dim i As Integer
Dim iend As Integer
Dim rng As Range
Dim str As String
Set rng = 'Put the range you are trying to do test
iend = rng.Rows.Count
' This loops until it makes it to all values
For i = 1 To iend
str = rng.Cells(i, 1).Value
If InStr(0, str, "Petrol") > 0 Then
rng.Cells(i, 2).Value = "Petrol"
ElseIf InStr(0, str, "Diesel") > 0 Then
rng.Cells(i, 2).Value = "Diesel"
Else
rng.Cells(i, 2).Value = ""
End If
If InStr(0, str, "LCV") > 0 Then
rng.Cells(i, 2).Value = "LCV"
ElseIf InStr(0, str, "Passenger car") > 0 Then
rng.Cells(i, 2).Value = "Passenger car"
Else
rng.Cells(i, 2).Value = ""
End If
If InStr(0, str, "Manual") > 0 Then
rng.Cells(i, 2).Value = "Manual"
ElseIf InStr(0, str, "Automatic") > 0 Then
rng.Cells(i, 2).Value = "Automatic"
Else
rng.Cells(i, 2).Value = ""
End If
Next i
End Sub
This code will turn out a blank if the value doesn't include the value in the string. This should help with debugging if there is something wrong with the text in column 1.