第 11 章. 自定义 函数
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
前面的 三章向您展示了如何使用 Python 脚本实现 Excel 自动化,以及如何通过单击按钮在 Excel 中运行此类脚本。本章将介绍自定义函数,以便从 Excel 中调用 Python 代码。
用户定义函数 (UDF)
微软此前将中的自定义函数称为用户定义函数(UDF)。虽然这两个术语可以互换使用,但本书始终采用“自定义函数”这一表述,这也是Google Sheets所使用的术语。
自定义函数( )是 Python 函数,您可以在 Excel 单元格中像使用SUM或AVERAGE 等内置函数一样使用它们。与上一章一样,我们将从quickstart命令开始,这使我们能够立即尝试第一个自定义函数。然后,我们将学习如何处理 pandas DataFrame 和图表,以及如何调试自定义函数。作为本章的总结,我们将深入探讨性能优化。 本章介绍的基于本地版xlwings的自定义函数仅在 Windows 系统上有效。不过,如第 13 章将要介绍的,xlwings Lite 支持在所有平台上使用自定义函数。
自定义函数入门
在本节中,您将构建并运行您的第一个自定义函数。开始之前,请确保已完成必要的环境配置。
先决条件
要跟随本章示例操作,您需要安装 xlwings 加载项,并启用 Excel 选项“信任对 VBA 项目对象模式的访问”:
- 加载项
-
我假设您已安装 xlwings 加载项,具体方法如第 9 章所述。不过这并非硬性要求:虽然它能简化开发过程(尤其是点击“导入函数”按钮),但部署时并非必需,您也可以通过将工作簿设置为独立模式来替代——详情请参阅第 9 章。
- 信任对 VBA 项目对象模型的访问
-
要导入自定义函数,您需要在 Excel 中更改一项设置:依次转到“文件”>“选项”>“信任中心”>“信任中心设置”>“宏设置”,然后勾选“信任对 VBA 项目对象模型的访问”复选框,如图 11-1 所示。这样,当您在加载项中单击“导入函数”按钮时,xlwings 就能自动将 VBA 模块插入到您的工作簿中。 由于仅在导入过程中需要此设置,因此这属于开发者设置,最终用户无需关注。
图 11-1. 信任 对 VBA 项目对象模型的访问
满足这两个先决条件后,您就可以开始编写您的第一个自定义 函数了!
Hello World
与往常一样,最简单的入门方式是在终端中使用quickstart命令 ``。让我们用它来创建经典的“Hello World!”函数:
Windows(终端)
cd %userprofile%\python-for-excel-2e uv run xlwings quickstart function1
macOS(终端)
cd ~/python-for-excel-2e uv run xlwings quickstart function1
运行quickstart命令将在配套存储库的目录中创建一个名为function1 的文件夹——创建完成后,您可以将该文件夹移动到任意位置。在function1目录中,在 Excel 中打开function1.xlsm,在 VS Code ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access