Smug face, I may have managed to help myself for a change. This appears to do what I want to. I shall get the hang of this vba malarky eventually. Code for reference:
Option Explicit
Sub amendPC()
Dim cl As Range
Dim rng As Range
Dim sPostcode As String
Set rng = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
For Each cl In rng
With cl
Select Case Len(.Value)
Case 7
If cl.Characters(4, 1).Text = " " Then GoTo Skip
sPostcode = Left(.Value, 4) & " " & Right(.Value, 3)
Case 6
If cl.Characters(3, 1).Text = " " Then GoTo Skip
sPostcode = Left(.Value, 3) & " " & Right(.Value, 3)
Case 5
sPostcode = Left(.Value, 2) & " " & Right(.Value, 3)
Case Else
GoTo Skip
End Select
.Value = sPostcode
Skip:
End With
Next cl
End Sub
Seems to work, so I'll leave that up as an example should anyone want to do the same. Thanks for the inital help.
Bookmarks