Your original question is somewhat open to interpretation to me.
- Do all the 6-character cells start with "16" or could they also start with, say, "15" and if so should that be removed too?
- Is it possible that any of the 4-character cells start with "16" and if so should it still be removed?
In any case, there would be a way to do the required replacements all at once, rather than looping a row at a time.
For example, this would just keep the last 4 characters from each cell.
You are right about easily being able to switch columns, so I'll leave you to that if you want to try this code.
Code:
Sub Keep4()
With Range("B1", Range("B" & Rows.Count).End(xlUp))
.Value = Evaluate(Replace("if(len(#),right(#,4),"""")", "#", .Address))
End With
End Sub