Не знаю, почему по какой-то причине встроенная функция 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;
}
Хм, хороший момент. Есть ли способ преобразовать значение строки в числовое значение в Excel? – woodykiddy
Да, функция VALUE –
Если ваш UDF просто возвращает Int или Double, а не String, это даже не нужно. –