【发布时间】:2013-11-13 14:37:06
【问题描述】:
我有一个 excel 文件,其中有一列包含日期数据。我希望用户输入他们选择的日期,然后我想创建一个新列,列出两个日期之间的天数差异。我拥有的宏正在工作,但我有几个问题,我想让它变得更好。 MWE小数据文件的链接是here。
用户输入的日期是 9/30/2013,我存储在 H20 中
宏:
Sub Date_play()
Dim x As Date
Dim x2 As Date
Dim y As Variant
x = InputBox(Prompt:="Please enter the Folder Report Date. The following formats are acceptable: 4 1 2013 or April 1 2013 or 4/1/2013")
x2 = Range("E2")
y = DateDiff("D", x2, x)
MsgBox y
'Used DateDiff above and it works but I don't know how to use it to fill a column or indeed a cell.
Range("H20").FormulaR1C1 = x
Range("H1").FormulaR1C1 = "Diff"
Range("H2").Formula = "=DATEDIF(E2,$H$20,""D"")"
Range("H2").AutoFill Destination:=Range("H2:H17")
Range("H2:H17").Select
End Sub
现在,我可以在不将用户输入日期存储在特定单元格中的情况下完成此操作吗?我更愿意在公式中使用变量“x”,但它对我不起作用。我必须将用户输入存储在 H20 中,然后使用 $H$20。
函数Datedif和过程DateDiff有什么区别?我可以在我的宏中使用 DateDiff 过程,但我不知道如何使用它来填写我的列。一种方法比另一种更好吗?
是否有更好的方法向现有工作表添加列,其中列包括一些涉及工作表上现有数据和一些用户输入的计算?接下来我要进行大量更复杂的计算。
谢谢
【问题讨论】:
-
当您尝试在公式中使用
x时遇到什么错误? -
在 H20 中,您要求的不是公式,而是一个简单的日期,所以最好使用
[H20] = x... [H1] 也是如此 -
@ARich 当我在公式中使用 x 时,我没有收到错误消息,我只收到 #NAME?在列中。当我执行跟踪错误时,我遇到了无效名称错误。
-
我没听懂你的第三个问题。
-
@SiddharthRout 让我再问一个问题。我正在尝试在新创建的行中进行稍微复杂的计算。