我有一组如下图所示的数据,我想要有条件地过滤。具体来说,在Amount列上 - 如果单元格值为197,我希望能够在其下方插入2个空白行,并使用原始行中的精确数据副本或增加时间戳的简单公式填充它。
我对VBA对象并不熟悉,所以我一直在寻找并尝试不同的东西,但我觉得我可能会遗漏一些明显的东西。在创建的下两行中,我想为每一行增加一个月的时间戳(创建(UTC)列),并复制所有其他数据。我不确定如何写一个填充的宏,并希望得到任何帮助。
谢谢!
答案 0 :(得分:1)
这样的事情应该可以解决问题。
确保您使用要更新的工作表(它使用ActiveSheet
)
Sub InsertAndUpdate()
Dim x As Long
For x = ActiveSheet.UsedRange.Rows.CountLarge To 2 Step -1
If Cells(x, "B").Value = 197 Then
Cells(x + 1, "B").EntireRow.Insert
Cells(x + 1, "B").EntireRow.Insert
Cells(x, "B").EntireRow.Copy Cells(x + 1, "B").EntireRow
Cells(x, "B").EntireRow.Copy Cells(x + 2, "B").EntireRow
Cells(x + 1, "A").Value = DateAdd("m", 1, Cells(x + 1, "A").Value)
Cells(x + 2, "A").Value = DateAdd("m", 2, Cells(x + 2, "A").Value)
End If
Next x
End Sub
你也可以稍微缩短它,但是使用嵌套循环来实现这么简单的事情就好了......
Sub InsertAndUpdate()
Dim x As Long, y As Integer
For x = ActiveSheet.UsedRange.Rows.CountLarge To 2 Step -1
If Cells(x, "B").Value = 197 Then
For y = 1 To 2
Cells(x + y, "B").EntireRow.Insert
Cells(x, "B").EntireRow.Copy Cells(x + y, "B").EntireRow
Cells(x + y, "A").Value = DateAdd("m", y, Cells(x + y, "A").Value)
Next y
End If
Next x
End Sub
结果(我添加的行突出显示)