如果单元格为空,则将相邻列的值移动到上面的行中

我有一个数据集,列A有一些空的单元格。 如果有一个空单元格,我想将列B中的值移动到上面的行,并清理B列中的值。我已经find了一个代码来做到这一点,当A列中只有一个空单元格但当A列中有两个或两个以上的空单元格(我的意思是把B列中的值移到A列不空的那一行,而不是上面那一行)时,它就不起作用了。 任何人都可以帮助我调整代码,以便它可以在其他情况下工作? 谢谢。

我的代码如下:

Sub MoveToRow() Dim i As Integer For i = 1 To 10 If IsEmpty(Sheets("Sheet1").Range("A" & i)) = True Then Sheets("Sheet1").Range("B" & i).Offset(-1, 0) = Range("B" & i).Offset(-1, 0) & "/" & Range("B" & i) Sheets("Sheet1").Range("B" & i).Value = Empty End If Next i End Sub 

数据集,前

 Sunday work1 work2 Monday work3 Tuesday work4 work5 Wednesday work6 Thursday work7 Friday work8 

数据集,后

 Sunday work1/work2 Monday work3 Tuesday work4/work5 Wednesday work6 Thursday work7 Friday work8 

数据集 – 没有工作(因为周日下面有两个空单元格)

 Sunday work1 work2 work3 Monday work4 Tuesday work5 work6 Wednesday work7 Thursday work8 Friday work9 

数据集 – 如果有效

 Sunday work1/work2/work3 Monday work4 Tuesday work5/work6 Wednesday work7 Thursday work8 Friday work9 

试试这个:

 Option Explicit Sub MoveToRow() Dim i As Integer Dim ws As Worksheet Dim r As Range Dim count As Integer Application.ScreenUpdating = False Set ws = Worksheets("Sheet1") For Each r In ws.Range(Cells(1, 1), Cells(Rows.count, 1).End(xlUp)) If IsEmpty(r) Then count = count + 1 With ws.Range(r.address) .Offset(-count, 1) = .Offset(-count, 1) & "/" & .Offset(0, 1) .Offset(0, 1).ClearContents End With Else count = 0 End If Next r Application.ScreenUpdating = True End Sub 

如果你愿意,你也可以在那里添加一些代码来删除左边的空行。 但是我会留给你去做的。 🙂