这是我两个工作表的一个小例子。如何从另一个工作表中获取单元格值并将其分配给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单元格可以包含任何一个双精度,一个错误,一个字符串或一个布尔值它是最安全的转换为对象,除非你想要一个错误,如果单元格数据不是所需的类型 –