Как это?Это использует слияние, а также учитывает, где заполнены A и B.
Sub Sample()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = Sheets("Sheet5")
With ws
LastRow = .Range("B" & .Rows.Count).End(xlUp).Row
For i = 1 To LastRow
If Application.WorksheetFunction.CountA(.Range("A" & i & ":" & "B" & i)) = 1 And _
Len(Trim(.Range("A" & i).Value)) = 0 Then
With .Range("A" & i & ":" & "B" & i)
.Merge
End With
End If
Next i
End With
End Sub
СЛЕДУЙТЕ ЗА
Если вы не хотите слияния, и Aвсегда оставайтесь пустыми, когда есть значение в B, тогда мы можем переместить значение из Col B в Col A следующим образом:
Sub Sample()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = Sheets("Sheet5")
With ws
LastRow = .Range("B" & .Rows.Count).End(xlUp).Row
For i = 1 To LastRow
If Len(Trim(.Range("A" & i).Value)) = 0 Then
.Range("A" & i).Value = .Range("B" & i).Value
.Range("B" & i).ClearContents
End If
Next i
End With
End Sub