C# 公式返回使用单元格引用的字符串,为什么?

C# 公式返回使用单元格引用的字符串,为什么?,c#,excel,vsto,excel-interop,C#,Excel,Vsto,Excel Interop,我对范围.公式有问题。下面是代码段(假设已创建范围对象且不为null) 假设我有这样一个公式,=MyCalc(41,A1),它使用相对单元格引用。在A1单元格中,有一个值,100 因此字符串变量formula的值总是=MyCalc(41,A1),而不是=MyCalc(41,100),这是我想要的结果 我想知道是否有办法让Range.Formula避免返回单元格引用。有什么想法吗?谢谢公式的全部要点是为您提供准确的输入内容。您可以编写一个方法,该方法通过公式递归地获取该单元格范围的值 没有为您这样

我对
范围.公式有问题。下面是代码段(假设已创建范围对象且不为null)

假设我有这样一个公式,
=MyCalc(41,A1)
,它使用相对单元格引用。在A1单元格中,有一个值,100

因此字符串变量
formula
的值总是
=MyCalc(41,A1)
,而不是
=MyCalc(41,100)
,这是我想要的结果


我想知道是否有办法让Range.Formula避免返回单元格引用。有什么想法吗?谢谢

公式的全部要点是为您提供准确的输入内容。您可以编写一个方法,该方法通过公式递归地获取该单元格范围的值

没有为您这样做的原因是它可能会导致大量递归。如果单元格A1(在您的示例中)actaull引用单元格B2,而单元格B2引用C100。。。等等


我将编写一个函数,它接受单元格引用并获取值(getCellValue)(而不是公式)。然后,我将编写一个函数来获取公式,使用正则表达式检查单元格引用,并对所有引用调用getCellValue。

这不是归结为神奇的想法吗?您希望它对公式进行一些计算,并替换引用的单元格值,但不计算完整的公式(例如,调用
MyCalc
并只给出结果)?你为什么希望它这样做?我不能将包含单元格引用的公式传递到web服务上,因为它会产生错误的结果。因此,我需要进行一些预处理,并重建包含值的公式。你正在请求一个错误-公式必须是输入的公式,任何其他结果都将不正确。Y您可以尝试使用Evaluate从公式中获取结果(如果上游依赖项链中存在未计算的单元格,则可能会失败),或者从单元格中获取当前值,但单元格中的公式就是单元格中的公式。感谢Charles的解释。但问题是web方法不能接受这样的公式,
MyCalc(41,A1)
,因为A1不是一个正确的参数。因此,我必须以某种方式将单元格引用转换为一个值,并将其放入将传递到web方法的公式中。这就是我遇到的问题。但是,如果它是一个Excel公式(由于您从某个范围获取公式,那么它可能是一个Excel公式)那么A1确实是一个正确的参数。并且(假设电子表格已经计算过)您可以从公式中获取单元格中的值,并将其传递给web服务。否则,web服务将不得不复制Excel公式解析和计算引擎。这与我的想法非常相似。我正在考虑使用
string.split
并用单元格值替换单元格引用字符串。嗯,t看看正则表达式,它们会做得更好:
string formula;
formula = Range.Formula;//it returns whatever is written in the formula, even the cell reference