2012-01-09 2 views
0

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

Например, у меня есть следующий 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; 
     } 

ответ

2

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

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

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

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

+0

Хм, хороший момент. Есть ли способ преобразовать значение строки в числовое значение в Excel? – woodykiddy

+1

Да, функция VALUE –

+0

Если ваш UDF просто возвращает Int или Double, а не String, это даже не нужно. –

Смежные вопросы