在UDF之上使用Excel内置函数

时间:2012-01-09 05:17:44

标签: c# .net excel vsto excel-formula

我不知道为什么由于某些原因Excel内置函数=SUM()无法真正总结自定义UDF创建的结果。它似乎总是以0.

结束

例如,我有一个名为myUDF的后续UDF,它将返回项目数。

对于单元格A1
公式:=myUDF('ItemA')结果:10

对于单元格B1
公式:=myUDF('ItemB')结果:15

所以当我=Sum(A1:B1)并将公式放在单元格C1中时,它不会返回25而是0。

我曾尝试使用一些数据格式化的东西(转换为数字),但仍然没有运气。这里有没有人有类似的问题?有关它的原因的任何想法?

感谢。

编辑: 代码示例

        public object MyUDF(string id, string pk, string param1 = "", string param2 = "", string param3 = "", string param4 = "")
        {
            object result = null;
            string strFormula;

            double n = 0;
            DateTime dt;

            try
            {
                strFormula = buildFormula(id, pk, param1, param2, param3, param4);

                result = ws.getServiceResultsDataString(id, objUser, pk, param1, param2, param3, param4);

                if (double.TryParse(result.ToString(), out n)) 
                {
                    result = n;
                }
                else if (DateTime.TryParse(result.ToString(), out dt))
                {
                    result = dt.Date;
                }
                ws.Dispose();
                objUser = null;

            }
            catch (Exception ex)
            {               
            }
            finally
            {   
            }
            return result;
        }

1 个答案:

答案 0 :(得分:2)

您的UDF是否返回字符串恰好包含数字字符

如果我进入Excel并键入'10(10,格式化为字符串)和'15(15,格式化为字符串)和SUM()它们,我得到0。

如果我输入10和15(格式化为数字)和SUM()它们,我得到25。

重现问题的一些示例代码将允许我们回答肯定。