2012-10-04 95 views
1

我從一張工作表中獲取值並將其放入另一張使用Excel中的宏。我目前有這個工作正常:在Excel和VBA中,如何將單元格的值設置爲公式結果而不是公式

sheet.range("B2:B35").Value = "=IF(SUMPRODUCT(--(Raw!$B$11:$B$322=$A2),--(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322)<>0,SUMPRODUCT(--(Raw!$B$11:$B$322=$A2),--(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322),""-"")" 

它顯然,把整個公式作爲單元格的值。我想要的只是將公式的結果放入單元格中。我試着在「IF ...」部分添加Evaluate(),但是IF沒有正確評估(我在每個單元格中都以「 - 」結尾)。這有可能做或我必須有單獨的代碼來循環,並將值更改爲單元格的值?

回答

3

用途:

sheet.range("B2:B35").Formula = "Your formula here" 

如果不工作,你可能要更改格式(這樣做在前):

sheet.range("B2:B35").NumberFormat = "General" 

編輯:

溶液變成在OP的代碼之後添加以下行:

sheet.range("B2:B35").value = sheet.range("B2:B35").value 
+0

最初的代碼已經在使用.Formula而不是.Value(我在使用Evaluate時都嘗試過)。這並沒有改變放入單元格的內容。單元格上的格式已經是General,儘管這似乎是自動的;我沒有專門通過代碼來設置它。 – Kurt

+0

奇怪。如果你運行它,然後選擇它並執行以下操作(在直接窗口中):Selection.NumberFormat =「General」,然後Selection.Value = Selection.Value,你會得到什麼? – mkingston

+1

修改你稍微說的話:添加sheet.range(「B2:B35」)。Value = sheet.range(「B2:B35」)。Value使它成爲一個數字。那就是有效的。我只是希望我不必這樣做,因爲我在循環中有大約5次以上的代碼。好吧。很容易添加一行代碼。 – Kurt

相關問題