2016-06-29 11 views
0

У меня есть функция python, которая принимает несколько требуемых аргументов вместе несколькими аргументами по умолчанию, но когда я попытался указать fzumstein, это не работает должным образом. Что я делаю не так?Как заставить UDF обрабатывать аргументы по умолчанию вместе с другими необходимыми аргументами?

def Doublesum(a, b=1): 
    return (a + b)**2 

В Excel:

=Doublesum(1) 

Это не возвращает значение, т.е., #Value!. Я установил xlwings версии 0.7.2.

+0

Вы украсили функцию с помощью '@ xw.func' и импортировали их в Excel? Работают ли другие функции (без аргументов по умолчанию)? Попробуйте загрузить образцы UDF с домашней страницы и попробуйте сначала. –

+0

@FelixZumstein да, он был украшен «@xlfunc». да работают функции без аргументов по умолчанию. –

+0

Какую версию python вы используете? Из любопытства я просто попробовал ваш пример (с помощью @ xw.func), и он работал нормально. Попытка сузить потенциальные различия. – Paul

ответ

0

Я бы порекомендовал попробовать новую установку в среде conda (так как это похоже на то, что у вас есть). Попытка:

conda create -n xlwings-test python=2.7 
activate xlwings-test 
conda install xlwings pandas numpy 

Попробуйте сделать from xlwings import func. Затем попробуйте UDF example, то есть загрузите два файла (.py и .xlsm) и откройте .xlsm в той же командной строке, которую вы используете для своей среды xlwings-test.

Это сработало, когда я только что попробовал (на окнах). Если вы продолжаете получать трассировку стека о keyerror, пожалуйста, опубликуйте его.

+0

Спасибо за ответ, я создал новую среду так, как вы упомянули выше. Но это я не смог импортировать udf. Неверное количество аргументов или недопустимое предупреждение о назначении свойств из Microsoft Visual Basic для приложений. –