Excel VBA宏,用于根据条件操作行
我尝试过搜索和谷歌搜索解决方案,但没有结果。 如果有我错过的解决方案,我现在道歉 (我的Excel数据库)-在运行宏之前Excel VBA宏,用于根据条件操作行,excel,vba,date,Excel,Vba,Date,我尝试过搜索和谷歌搜索解决方案,但没有结果。 如果有我错过的解决方案,我现在道歉 (我的Excel数据库)-在运行宏之前 Start Date Start Time Number Finish Date Finish Time 14-Jul-15 22:00 1 16-Jul-15 06:00 15-Jul-15 22:00 1 17-Jul-15 06:00 15-Jul-15 22:00 1 16-Jul-15 06:00 Start
Start Date Start Time Number Finish Date Finish Time
14-Jul-15 22:00 1 16-Jul-15 06:00
15-Jul-15 22:00 1 17-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
Start Date Start Time Number Finish Date Finish Time
14-Jul-15 22:00 1 16-Jul-15 06:00
14-Jul-15 22:00 1 15-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
15-Jul-15 22:00 1 17-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
16-Jul-15 22:00 1 17-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
(我的Excel数据库)-运行宏后
Start Date Start Time Number Finish Date Finish Time
14-Jul-15 22:00 1 16-Jul-15 06:00
15-Jul-15 22:00 1 17-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
Start Date Start Time Number Finish Date Finish Time
14-Jul-15 22:00 1 16-Jul-15 06:00
14-Jul-15 22:00 1 15-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
15-Jul-15 22:00 1 17-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
16-Jul-15 22:00 1 17-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
我想让宏做的是,
检查“开始日期”和“完成日期”的差值是否大于2。
如果两者之间的差值为1或0,则会转到下一行数据进行检查。
但是,如果大于0或1,则会在该特定行下添加另一行。然后复制类似的内容,但修改日期
比如说,
14-Jul-15 22:00 1 16-Jul-15 06:00
在宏之后,它将添加到原始行下
14-Jul-15 22:00 1 15-Jul-15 06:00
15-Jul-15 22:00 1 16-Jul-15 06:00
很抱歉,如果我的问题不清楚,请帮助我创建此宏。在循环中插入行时,请始终从底部开始向上操作,否则插入新行时可能会丢失步骤顺序。通过向上移动,新插入的行假定行号已经超出循环的范围
Sub StackOverflow()
Dim rw As Long, i As Long
With ActiveSheet
For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If (CDate(.Cells(rw, 4).Value2) - CDate(.Cells(rw, 1).Value2)) > 1 Then
For i = 1 To (CDate(.Cells(rw, 4).Value2) - CDate(.Cells(rw, 1).Value2))
With .Cells(rw, 1).Resize(1, 5)
.Copy
.Insert Shift:=xlDown ', copyorigin:=.Cells
End With
.Cells(rw + 1, 4) = .Cells(rw + 1, 4).Value2 - (i - 1)
.Cells(rw + 1, 1) = .Cells(rw + 1, 4).Value2 - 1
Next i
End If
Next rw
End With
Application.CutCopyMode = False
End Sub
如果你的样本数据准确地代表了实际数据,那么上面应该将你的日期范围快速扩展到每一行的一天分离。
中间的是什么,你能显示什么代码来证明你自己尝试过这个?不是一个免费的代码编写服务。你好,真的很抱歉,我没有把细节写下来。对于我的代码,我不确定如何循环遍历所有行,而不是硬编码位置。你好,吉佩德,首先,非常感谢你花时间回复我。我真诚地为我违反的规则道歉(对这个网站来说还是新的,不习惯!)我已经测试了你提供的代码,它们正在工作。然而,最后一个请求!当我运行宏时,它删除了原始行。例如,如果有1到3。它添加了1到2,2到3(但是原来的1到3已经消失了。有什么想法吗?)再次感谢你如果你从7月14日到7月17日有一行,它会创建一个新的行,从7月16日到7月17日,再创建一个新的行,从7月15日到7月16日,并将原来的行更改为7月14日到7月15日。这不是你最后的示例演示的吗?啊。我想我可能没有说清楚。“在宏之后,它将添加到原始行下。”-我在上一个示例中的原始语句。我应该详细阐述一下,所以在我的最后一个例子中,我应该以7月14日-16日,7月14日-15日,7月15日-16日结束。不管怎样,你可以修改代码,让它变成这样?先生,我再次表示歉意。我相信我现在理解了最后一个例子。见上面的修订。谢谢你,吉佩德先生,这正是我想要的。祝你有愉快的一天!