【问题标题】:How to make UDF to handle default arguments, together with other required arguments?如何使 UDF 处理默认参数以及其他必需的参数?
【发布时间】:2016-06-29 03:54:32
【问题描述】:

我有一个 python 函数,它需要几个必需的参数和几个默认参数,但是当我尝试 fzumstein 提到它时,它不能按预期工作。我做错了什么?

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

在excel中:

=Doublesum(1)  

这不返回任何值,即#Value!。我已经安装了 xlwings 0.7.2 版。

【问题讨论】:

  • 您是否使用@xw.func 修饰了函数并将它们导入到Excel 中?其他功能(没有默认参数)是否有效?尝试从主页下载 UDF 示例并先试用。
  • @FelixZumstein 是的,它装饰有“@xlfunc”。是的,没有默认参数的函数可以工作。
  • 你用的是什么版本的python?出于好奇,我刚刚尝试了您的示例(使用@xw.func)并且效果很好。试图缩小潜在差异。
  • @Paul 我正在使用 python 2.7.11。我认为这可能是问题所在,如果我将 xlwings 导入为 xw 并使用“@xw.func”,我将无法导入 UDF,因为我得到了这个运行时错误,来自第 197 行 xlpyserver 的键错误。但是,如果我将其更改为 from xlpython import * 并使用“@xlfunc”,它会导入。我不知道为什么,但它与 Anaconda 有关!我该如何解决这个问题?

标签: udf xlwings default-arguments


【解决方案1】:

我建议在 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)并在您用于 xlwings-test 环境的同一命令提示符下打开 .xlsm。

当我刚刚尝试时(在 Windows 上),它起作用了。如果您不断收到有关 keyerror 的堆栈跟踪,请发布它。

【讨论】:

  • 感谢您的回复,我按照您上面提到的方式创建了一个新环境。但这我无法导入 udf。来自 Microsoft Visual Basic 应用程序的参数数量错误或无效属性分配警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
相关资源
最近更新 更多