這是我兩個工作表的一個小例子。如何從另一個工作表中獲取單元格值並將其分配給UDF的返回值?
原始表:
正如你可以看到,這個表有兩個單元等待在以後階段重新計算。 (即細胞與紅色#Eval標記)
結果表:
在上述結果表,我們有兩個結果,草莓和桃分別。這兩個結果是爲兩個#Eval單元準備的,需要替換#Eval標記。
請注意,#Eval實際上是由UDF返回的,表明這個單元需要重新計算。重新計算將通過單擊按鈕或其他方式手動啓動。
另請注意,該位置映射在兩張紙上 - 如果#Eval位於單元格A3中,那麼在結果表單元格A3中也會出現結果。
因此,我的主要目標是將#Eval單元替換爲相應的結果。但我在將結果傳遞到我的UDF時遇到麻煩 - 我不知道如何以編程方式獲取當前正在重新計算的單元格的引用/地址。
下面是我目前得到的代碼,我認爲它沒有被正確執行。誰能幫忙?或者有沒有其他的方式來實現這一點?
在此先感謝。
//assign value from result sheet back to result variable
private string getResultFromResultSheet(Excel.Worksheet originalSheet, Excel.Worksheet resultSheet)
{
string DataResult = null;
//Excel.Range resultSheetRange = resultSheet.UsedRange;
//string addresse = resultSheetRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Excel.Range originalSheetRange = originalSheet.UsedRange; //<= I think it's incorrect here
string os_currentAddress = originalSheetRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Excel.Range currentRRange = null;
currentRRange = resultSheet.get_Range(os_currentAddress, Type.Missing);
if (currentRRange != null)
{
DataResult = currentRRange.Text;
}
return DataResult;
}
非常感謝您的幫助。但是,只有1個問題,我似乎有類型轉換問題,當我使用**。Value2 **。我認爲它如果原始數據是基於文本的值,那麼工作正常,但是當涉及到日期類型數據時,它會給我不正確的結果。'string result =(string)ResultRange.Value2;'是我目前使用的代碼。轉換.Value2到對象第一? – woodykiddy
Excel日期值是雙打,而不是字符串 –
由於Excel單元格可以包含任何一個雙精度,一個錯誤,一個字符串或一個布爾值它是最安全的轉換爲對象,除非你想要一個錯誤,如果單元格數據不是所需的類型 –