2016-12-04 240 views
0

如何在excel公式格式的特定单元格中插入或粘贴大型Excel公式。我的项目有很大的excel表格来计算no。还剩下几天,它与当前日期和时间相关联。公式必须插入列中,只要我提交数据输入表格中的数据。它会自动收集当前工作表中不同单元格的值并进行计算。
但在这里我收到“编译错误,语句的期待的结束”的公式线即,在双quatotions“”。使用excel VBA在Excel单元格中粘贴excel公式(excel格式)?

我可以在Excel中直接写入和糖衣丸

可以写VBA代码的上述计算,但由于我的项目的要求,我有要插入的公式。

有什么办法来插入公式????我使用的Excel 2016

Set Fcell = formulaWks.Range("O7") 

'formula = "=$A1+$B1" ' example for testing 
Formula = "=IF(YEAR(NOW())=$W$3,IF(ISBLANK($G7),"",IFERROR(IF(DATEDIF(TODAY(),$N7,"y")=0,"",DATEDIF(TODAY(),$N7,"y")&" y ")&IF(DATEDIF(TODAY(),$N7,"ym")=0,"",DATEDIF(TODAY(),$N7,"ym")&" m ")&IF(DATEDIF(TODAY(),$N7,"md")=0,"",DATEDIF(TODAY(),$N7,"md")&" d"),"wrong date")),"Package completed")" 
Fcell = ActiveCell.formula 
+0

是什么' “Y”'' “YM”',' “M”'和' “MD”'你的公式?他们是“整数”吗?定义了长变量? –

+0

“y”,“ym”,“m”和“md”是'年份''月'的符号 –

+0

检查下面的答案,看它是否有效 –

回答

0

请尝试下面的代码,它将与您想要测试的基本公式一起使用。

Option Explicit 

Sub InsertFormula() 

Dim formulaWks As Worksheet 
Dim Fcell As Range 
Dim FormulaString As String 

' modify "Sheet1" to your sheet's name  
Set formulaWks = Worksheets("Sheet1") 
Set Fcell = formulaWks.Range("O7") 

FormulaString = "=$A1+$B1" ' example for testing 
Fcell.Formula = FormulaString 

End Sub 

关于你的“龙”的公式,该公式如下字符串传递:

FormulaString = "=IF(YEAR(NOW())=$W$3,IF(ISBLANK($G7)," & Chr(34) & Chr(34) & ",IFERROR(IF(DATEDIF(TODAY(),$N7," & Chr(34) & "y" & Chr(34) & ")=0," & Chr(34) & Chr(34) & ",DATEDIF(TODAY(),$N7," & Chr(34) & "y" & Chr(34) & ")&" & Chr(34) & " y " & Chr(34) & ")" & _ 
       "&IF(DATEDIF(TODAY(),$N7," & Chr(34) & "ym" & Chr(34) & ")=0," & Chr(34) & Chr(34) & ",DATEDIF(TODAY(),$N7," & Chr(34) & "ym" & Chr(34) & ")&" & Chr(34) & " m " & Chr(34) & ")" & _ 
       "&IF(DATEDIF(TODAY(),$N7," & Chr(34) & "md" & Chr(34) & ")=0," & Chr(34) & Chr(34) & ",DATEDIF(TODAY(),$N7," & Chr(34) & "md" & Chr(34) & ")&" & Chr(34) & " d" & Chr(34) & ")," & _ 
       Chr(34) & "wrong date" & Chr(34) & "))," & Chr(34) & "Package completed" & Chr(34) & ")" 

Debug.Print FormulaString ' for debug, to see the Formula string in the immediate window 

注:“长”式的最终版本已经通过YowE3K编辑的 - 如果它不工作,怪我(即YowE3K)不是Shai。

+0

DATEDIF函数的第三个参数是所以'DATEDIF(TODAY(),$ N7,&&ym&“)'无疑是'DATEDIF(TODAY(),$ N7,”ym“)'(用双引号标记将是'DATEDIF(TODAY(),$ N7,“”ym“”)')。 – YowE3K

+0

@ YowE3K随时编辑“LONG”公式,我无法测试它,因为我的Excel中没有DATEDIF'在我的机器上工作 –

+0

非常感谢。它的工作...在一些小的修改后。并感谢提供'Chr(34)'为'“问题的想法。 –

0

您需要先通过这样的字符串中加双引号两次逃脱从字符串双引号 - ISBLANK($G7),""""

然后用公式这样

Range("O7").Formula = "[Your formula with escaped double quotes]"