我需要按标准日期将数据从一张纸移动到另一张纸,但我使用 IF 所做的选择只选择了与该标准匹配的最后一个单元格。
这是我到目前为止得到的:
Sub Copiar()
Dim range1 As Range
Set range1 = Range("k56:k58")
For Each cell In range1
If cell.Value = Range("R55").Value Then
cell.Offset(0, 2).Select
Selection.Copy
Sheets("Plan2").Activate
Range("r56").Select
ActiveSheet.Paste
End If
Next
End Sub
最佳答案
您正在找到它们,问题是每个答案都会覆盖另一张纸上的 R56。这是每次重复循环时都会推进目标单元格的代码 - 并且还避免了选择和激活您正在使用的每个工作表和单元格的不良做法:
Sub Copiar()
Dim range1 As Range, destin as Range
Set range1 = Range("k56:k58")
Set destin= Sheets("Plan2").Range("r56")
For Each cell In range1
If cell.Value = Range("R55").Value Then
cell.Offset(0, 2).copy destin
set destin=destin.offset(1,0) ' Crucial bit here
End If
Next
End Sub
关于excel - 按日期复制和粘贴数据 - excel vba,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54241452/