Использование встроенных функций Excel поверх UDF - PullRequest
0 голосов
/ 09 января 2012

Я не знаю, почему по какой-то причине встроенная функция Excel =SUM() не может на самом деле суммировать результаты, созданные пользовательским UDF. По-видимому, всегда заканчивается 0.

Например, у меня есть следующий UDF, называемый myUDF, который будет возвращать количество элементов.

Для клетки A1:
Формула: =myUDF('ItemA') Результат: 10

Для клетки B1:
Формула: =myUDF('ItemB') Результат: 15

Так что, когда я сделаю =Sum(A1:B1) и добавлю формулу в ячейку C1, она вернет не 25, а 0.

Я пытался использовать некоторые средства форматирования данных (преобразования в числовые значения), но мне все равно не повезло. У кого-нибудь здесь была подобная проблема раньше? Есть идеи по поводу этого?

Спасибо.

EDIT: Пример кода

        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 Ответ

2 голосов
/ 09 января 2012

Ваш UDF возвращает число или строку, которая содержит числовые символы ?

Если я захожу в Excel и набираю '10 (10,отформатированный как строка) и '15 (15, отформатированный как строка), и SUM () их, я получаю 0.

Если я наберу 10 и 15 (отформатирован как числа) и SUM () их,Я получаю 25.

Некоторый пример кода, который воспроизводит проблему, позволит нам ответить наверняка.

...