我如何使用这个" = IF(F2> E2,F2-E2,(" 24:00:00" -E2)+ F2)"在VB.net代码?

时间:2014-07-28 18:33:56

标签: vb.net excel

我正在尝试减少为应用程序生成报告所花费的时间。我们在Excel中生成报告。我们发现使用公式的Excel中的某些计算比在VB.net中以编程方式执行它要快得多。

所以基本上我需要在VB.net代码中使用以下公式(时差)。但它给了我一个错误。

=IF(F2>E2, F2-E2, ("24:00:00"-E2)+F2)

我尝试了什么

Dim f As String = "=if(RC[-1]>RC[-2], RC[-1]-RC[-2], (" & "24:00:00" & "-RC[-2])+RC[-1]"

wbXl.Sheets("time diff", 7).FormulaR1C1 = f

wbXl.Sheets("time diff").Cells(2, 7).FormulaR1C1 = """"=if(RC[-1]>RC[-2], RC[-1]-RC[-2], ("24:00:00" & "-RC[-2])+RC[-1]""""

和其他一些组合似乎没有任何效果。

任何指针或帮助都会非常有用。

1 个答案:

答案 0 :(得分:0)

我从哪里开始......

Dim f As String = "=if(RC[-1]>RC[-2], RC[-1]-RC[-2], (" & "24:00:00" & "-RC[-2])+RC[-1]"

这不是Excel中的有效语法(你不能在你昏暗的时候指定值...如果你想这样做就得到.net。)

引号中的“24:00:00”是什么?为什么不减1?

所有报价......应该是:

Cells(2, 7).FormulaR1C1 = "=if(RC[-1]>RC[-2], RC[-1]-RC[-2], (""24:00:00""-RC[-2])+RC[-1])"

或更好:

Cells(2, 7).FormulaR1C1 = "=if(RC[-1]>RC[-2], RC[-1]-RC[-2], (1-RC[-2])+RC[-1])"

我还假设你正在使用RC表示法,因为你要进行动态录入。否则,只需使用单元ID(更易于维护)。重新阅读,它在.net中调用Excel(我正在收集)。否则,我会说工作表语法应该不同。 (并且大多数人更喜欢Range to Cell。Cell(2,7)Range("$G$2")更难阅读。)

以下是我写这个公式的方法:

=B8+(B8<A8)-A8
(or in RC: =RC[-1]+(RC[-1]<RC[-2])-RC[-2])

删除原始文件的一些冗余:

=IF(B6>A6,B6-A6,("24:00:00"-A6)+B6)