Excel VBA-计算并打印多行答案
我还是vba新手,正在编写一个宏,使用dateDiff计算两列中两个日期之间的时间,然后在旁边的单元格中打印差异。我还想用一个直到空为止 列A保存开始日期 B列保存结束日期 C栏将保留答案 我有一些有用的代码,但大部分代码都是为了理解宏的目标而编写的,需要更改Excel VBA-计算并打印多行答案,excel,vba,Excel,Vba,我还是vba新手,正在编写一个宏,使用dateDiff计算两列中两个日期之间的时间,然后在旁边的单元格中打印差异。我还想用一个直到空为止 列A保存开始日期 B列保存结束日期 C栏将保留答案 我有一些有用的代码,但大部分代码都是为了理解宏的目标而编写的,需要更改 Range("A2").Select Do Until IsEmpty(ActiveCell) For i = 2 To 25 date1 = ["A" & i] date2 = ["B" & i] answ
Range("A2").Select
Do Until IsEmpty(ActiveCell)
For i = 2 To 25
date1 = ["A" & i]
date2 = ["B" & i]
answer = DateDiff("n", date1, date2)
"C" & i = answer
next i
Loop
谢谢你的帮助 在不知道日期格式细节的情况下,假设数据连续,我建议如下:
Dim LR as Long
LR=Cells(.Rows.Count, "A").End(xlUp).Row
Sheets("NAME").Range("C1:C"&LR).Formula="=B1-A1"
希望这有帮助
根据斯科特的评论编辑。有几件事:
a。使用速记[]时不能有变量:
将工作,但
i = 1
["A" & i]
不会。所以你必须使用
Range("A" & i)
或
b。do循环不会更改ActiveCell。因此,如果A2中有一个值,它将永远不会结束
c。更好的做法是找到最后一行并使用FOR循环。有关查找最后一行的多种方法,请参见此处:
d。现在养成声明每个范围对象的父对象的习惯,即使它是ActiveSheet
e。始终声明每个变量,即使您将其声明为变量
Dim i as Long
Dim lastRow as long
Dim date1 as double
Dim Date2 as double
Dim answer as long
With ActiveSheet
lastRow = .Cells(.Rows.Count,1).End(xlUp).row
For i = 2 To lastRow
date1 = .Cells(i,1)
date2 = .Cells(i,2)
answer = DateDiff("n", date1, date2)
.Cells(i,3) = answer
next i
End With
无需填写:Sheets名称。范围C1:C&LR。公式==B1-A1对两条线都足够了。Excel将根据需要更改引用。@ScottCraner对此表示感谢;我知道我过去有过一些问题,但我记不起细节,我会相信你,因为。。。你就是你。哈哈,到目前为止你还没把我搞错!这很有帮助。当我使用F8在for循环中循环时,答案变量得到的是正确的答案,但它没有将其打印到C列的相应行中。Cellsi,3=答案是否支持这一行?我忘记了结尾。尝试编辑的代码。这对我来说是可行的,确保输出变量没有输入错误@皮坦克,你成功了!我还添加了一个if语句。有一个列摘要,每个单元格都有“是”或“否”。如果单元格说“否”,则我希望此for循环运行并用C打印。“摘要=.Cells i,4”不起作用。我是否添加.value?@Peel new question=new post。
Cells(i,1)
Dim i as Long
Dim lastRow as long
Dim date1 as double
Dim Date2 as double
Dim answer as long
With ActiveSheet
lastRow = .Cells(.Rows.Count,1).End(xlUp).row
For i = 2 To lastRow
date1 = .Cells(i,1)
date2 = .Cells(i,2)
answer = DateDiff("n", date1, date2)
.Cells(i,3) = answer
next i
End With