Excel VBA-计算并打印多行答案

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

我还是vba新手,正在编写一个宏,使用dateDiff计算两列中两个日期之间的时间,然后在旁边的单元格中打印差异。我还想用一个直到空为止

列A保存开始日期 B列保存结束日期 C栏将保留答案

我有一些有用的代码,但大部分代码都是为了理解宏的目标而编写的,需要更改

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