I did a quick try,
This shift the data over once, but not quite right.
I think you need to evaluate each row first to find the last used cell to move to. Or maybe there's a better way? Or maybe loop the For Each for the number of columns you have so it runs multiple times.
Sub ShiftLeft()
Dim MyRange As Range
Dim MyCell As Range
Set MyRange = Range("E1:G10")
For Each MyCell In MyRange
If IsEmpty(MyCell.Offset(0, -1)) Then
MyCell.Offset(0, -1) = MyCell
MyCell.ClearContents
End If
Next MyCell
End Sub
Bookmarks