Excel 如果单元格为空,请将相邻列的值移动到上面的行
我有一个数据集,a列有一些空单元格。如果有一个空单元格,我想将B列中的值移到上面的行中,并清除B列中的值。我已经想出了一个代码,在a列中只有一个空单元格时执行此操作。但当a列中有两个或更多空单元格时,此代码不起作用(我的意思是将B列中的值移动到A列不为空的行;在本例中不是上面的行)。有人能帮我调整代码,以便它可以在其他情况下工作吗?谢谢 我的代码如下:Excel 如果单元格为空,请将相邻列的值移动到上面的行,excel,vba,Excel,Vba,我有一个数据集,a列有一些空单元格。如果有一个空单元格,我想将B列中的值移到上面的行中,并清除B列中的值。我已经想出了一个代码,在a列中只有一个空单元格时执行此操作。但当a列中有两个或更多空单元格时,此代码不起作用(我的意思是将B列中的值移动到A列不为空的行;在本例中不是上面的行)。有人能帮我调整代码,以便它可以在其他情况下工作吗?谢谢 我的代码如下: Sub MoveToRow() Dim i As Integer For i = 1 To 10 If IsEmpty(Sheets("Sh
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
尝试一下:
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
如果您愿意,您也可以在其中添加一些代码来删除剩余的空行。但我将让您自己来做。:-尝试一下:
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
如果愿意,还可以在其中添加一些代码来删除剩余的空行。但我会让你来做的。:-) 它起作用了!你太棒了!给我留下了很多要学习的东西!非常感谢你!请问如何学好VBA?对书籍或资源有什么建议吗?我说的不足以表达我的感激之情。非常感谢你@非常欢迎你!很乐意帮忙。我没有什么特别的书可以推荐,但你可以看看这里列出的一些书:并阅读一些评论。以下是一些有用的网站:1)2)。互联网上充满了帮助。:-)这很有帮助!非常感谢你!它起作用了!你太棒了!给我留下了很多要学习的东西!非常感谢你!请问如何学好VBA?对书籍或资源有什么建议吗?我说的不足以表达我的感激之情。非常感谢你@非常欢迎你!很乐意帮忙。我没有什么特别的书可以推荐,但你可以看看这里列出的一些书:并阅读一些评论。以下是一些有用的网站:1)2)。互联网上充满了帮助。:-)这很有帮助!非常感谢你!