Использование встроенных функций Excel поверх UDF

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

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

Для клетки 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 ответ

Решение

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

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

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

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

Другие вопросы по тегам