2016-12-04 281 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]"