2012-01-27 49 views
0

我遇到Range.Formula問題。該代碼段是低於(假設Range對象已創建與is not null)Range.Formula返回一個使用單元格引用的字符串,爲什麼?

string formula; 
formula = Range.Formula;//it returns whatever is written in the formula, even the cell reference 

比方說,我有這樣一個公式,=MyCalc(41, A1),使用相對單元格引用。在單元格A1中,有一個值爲100.

因此,字符串變量formula的值總是=MyCalc(41, A1)而不是=MyCalc(41, 100),這是我想要的結果。

我不知道是否有辦法讓Range.Formula避免返回單元格引用。有任何想法嗎?謝謝

+2

難道這不歸結爲神奇的想法 - 你希望它做一些*評估公式,並替換引用的單元格值,但不評估完整的公式(例如調用MyCalc並只給你結果)?你爲什麼期望它做到這一點? – 2012-01-27 07:44:31

+0

我無法將一個帶有單元格引用的公式傳遞到Web服務上,因爲它會產生錯誤的結果。所以我需要做一些預處理,並重構其中會有值的公式。 – woodykiddy 2012-01-27 08:30:04

+1

您正在申請一個錯誤 - 公式必須是輸入的公式,其他任何結果都不正確。您可以嘗試使用Evaluate從公式中獲取結果(如果上游依賴鏈中存在未計算的單元格,則可能會失敗),或者來自單元格的當前值,但單元格中的公式是單元格中的公式。 – 2012-01-27 08:41:45

回答

0

公式的全部內容就是給你準確的輸入內容。你可以編寫一個方法,通過一個公式並遞歸獲取該單元格區域的值。

這不是爲你做的原因是它可能會招致很多遞歸。如果單元格A1(在您的示例中)actaull引用單元格B2,它引用C100 ...等等。

我會寫一個函數,它需要一個單元格引用並獲取VALUE(getCellValue)(不是公式)。然後,我會編寫一個獲取公式的函數,使用正則表達式檢查單元格引用,並在所有引用上調用getCellValue。

+0

這與我的想法非常相似。我正在考慮使用'string.split'並用單元格值替換單元格引用字符串。 – woodykiddy 2012-01-27 08:33:52

+0

那麼,看看正則表達式,他們會做得更好:http://stackoverflow.com/questions/4932283/how-can-i-validate-an-excel-cell-reference-that-includes-一個片材名稱 – 2012-01-27 10:03:46

相關問題