2013-02-26 336 views
3

enter image description hereVBA excel公式计算?


大家好,我是新来的VBA请帮助我。我有一张如图所示的桌子。 Days列是一个公式列。公式很简单,它是实际日期日期的差值。但实际日期存在于范围(“D5”)处的另一张纸(Sheet2)中。如何以编程方式分配此公式。我试图用Worksheets("Sheet1").Range("E2:E10").FormulaR1C1 = "=" & Worksheets("Sheet2").Range("D5").Value & "-Sheet1!RC[-1]"Worksheets("Sheet1").Range("I6:I10").FormulaR1C1 = "=Sheet2!R[5]C[4]Sheet1!RC[-1]" unfornately都给出了错误的价值观。谢谢。

回答

1

可以使用DATEDIF函数来计算两个日期之间的区别:

=DATEDIF(Sheet2!D5,Sheet1!E2,"D") 

你将不得不为列复制和修改这个公式,因为这应该用于第一小区的工作。

更新:

使用VBA,你可以用下面的,这应该与你的上述数据集的工作:

Worksheets("Sheet1").Range("E2:E10").FormulaR1C1 = "=DATEDIF(""" & Worksheets("Sheet2").Range("D5") & """,Sheet1!RC[-1],""D"")" 
+0

谢谢丹纳,它像魅力一样工作。再次感谢:-) – 2013-02-26 10:55:03

1

如果公式是从另一片你仍然可以参考的数据当前表格。

使用R1C1与式:

范围( “E2”)FormulaR1C1 = “=今天() - R [0] C [-1]”

添加只是数量。电子表格:

范围( “E2”)值=则DateDiff( “d”,范围( “D2”),现在())

UPDATE:

对于多个值:

Worksheets("Sheet1").Range("E2:E10").FormulaR1C1 = "=Today() - R[0]C[-1]" 
+0

感谢您的快速响应......我将有成千上万的行如此循环遍历所有行并分配值是有点耗时的过程。因为我有超过10个这种类型的列。任何其他想法? – 2013-02-26 10:31:09

+0

我改变了类似'Worksheets(“Sheet1”)的公式。Range(“E2:E10”)。FormulaR1C1 =“=”&Worksheets(“Sheet2”)。Range(“D5”)。Value&“ - R [0 ] C [-1]“'但它给出错误的输出。 – 2013-02-26 10:48:31

+0

您是否需要在电子表格上显示值或公式?价值更高效 – InContext 2013-02-26 10:48:51