
几十年来,每当Excel用户需要自动化重复性任务时,答案总是一致的:Visual Basic for Applications (VBA)。虽然VBA功能异常强大,但它需要编程知识,只能在Microsoft Office桌面生态系统中运行,对于初学者来说可能会令人望而生畏。今天,我们有了一个基于云的现代化替代方案:Microsoft Power Automate。
Power Automate(前身为Microsoft Flow)允许您在喜欢的应用程序和服务之间构建自动化工作流,以同步文件、获取通知、收集数据等。最棒的是,入门此工具不需要任何编程知识。在这份全面指南中,我们将探索如何使用Power Automate实现无缝的Excel自动化,而完全无需编写一行VBA代码。
在深入探讨“如何做”之前,理解“为什么”很重要。虽然学习VBA基础:你的第一个Excel程序对于本地桌面端、复杂的电子表格操作来说仍然是一项有价值的技能,但Power Automate在现代化的互联办公环境中表现得更为出色。
以下是关于何时使用哪种工具的快速对比:
| 特性 | Excel VBA | Power Automate |
|---|---|---|
| 运行环境 | 桌面端(主要离线) | 基于云端(需要联网) |
| 学习曲线 | 陡峭(需要编程知识) | 平缓(可视化拖拽界面) |
| 外部集成 | 困难(需要复杂的API) | 原生集成数百种应用 |
| 触发器类型 | 工作簿事件(打开、点击、更改) | 外部事件(邮件、表单提交、Webhook) |
如果您的目标是从外部数据源自动化录入数据、基于电子表格数据发送自动邮件,或者将Excel与Salesforce、SharePoint或Outlook等软件连接起来,Power Automate将是您的最佳选择。然而,如果您只专注于跨数百个本地文件进行使用Excel VBA自动化报表的格式设置,VBA仍然是王者。
在Power Automate中,自动化的序列被称为流(Flow)。每个流由三个主要构建块组成:
要成功使用Power Automate自动化Excel,您的设置必须满足两个关键要求:
因为Power Automate是一项云服务,它无法可靠地与保存在计算机`C:`盘本地的Excel文件进行交互。您的工作簿必须保存在OneDrive for Business或SharePoint文档库中。
Power Automate不能简单地将数据放入空白工作表中;它需要明确的边界。您必须将目标数据区域格式化为正式的Excel表格(Table)。具体操作步骤如下:
让我们来看一个非常实用的场景:将收到的查询电子邮件自动记录到Excel电子表格中。这正是消除手动数据录入的一个绝佳示例,正如文章一家初创公司如何通过Excel自动化每周节省20小时中所述。
在OneDrive中创建一个名为“Email_Log.xlsx”的新Excel文件。创建一个包含以下标题的表格:
将此区域格式化为表格并命名为“EmailLogTable”。关闭文件。
登录Power Automate (make.powerautomate.com)。在左侧边栏点击创建,然后选择自动化云端流。
将您的流命名为“记录收到的电子邮件”。在“选择流的触发器”搜索框中,输入“Outlook”。选择当新电子邮件到达时 (V3) - Office 365 Outlook,然后点击“创建”。
在流设计器中,点击触发器框。您可以在此处指定参数,例如仅在电子邮件包含特定主题筛选器(如“查询”)时触发。在本次演练中,我们将保持默认设置,即在收件箱中收到任何电子邮件时均触发。
点击+ 新步骤按钮。搜索“Excel”并选择Excel Online (Business)连接器。从操作列表中选择在表中添加一行。
现在,映射文件位置:
一旦您选择了表格,Power Automate会自动显示您在第1步中创建的列标题。点击每个字段以分配“动态内容”(来自电子邮件触发器的数据):
点击保存。现在,您已经在不编写任何VBA代码的情况下创建了一个功能齐全的自动化流程!向您的账户发送一封测试邮件,然后看着Excel表格自动填充。
Power Automate的注意事项之一是,它导入的数据格式可能并不完全符合您的要求。例如,我们电子邮件示例中的接收时间将作为凌乱的ISO 8601时间戳(例如 2023-11-28T14:32:00Z)导入。
与其尝试使用复杂的Power Automate表达式来解析它,不如依赖表格内的标准Excel公式。在您的Excel表格中添加一个名为“清理后的日期”的新列。由于您使用的是正式的Excel表格,只需在第一行编写公式,它就会在每次Power Automate添加新行时自动向下填充。
要从时间戳中仅提取日期,您可以结合使用LEFT和VALUE函数,并套用标准格式:
=VALUE(LEFT([@[Date Received]], 10))
在Excel中将这个新列格式化为“短日期”。现在,每当流运行时,Excel都会立即处理数据转换。
您也可以利用这个机会交叉引用传入的数据。例如,如果您想检查发件人的电子邮件是否属于另一个工作表中的现有客户,您可以直接在您的自动化表格中使用INDEX MATCH:更优越的查找方法:
=IFERROR(INDEX(Clients!B:B, MATCH([@[Sender Email]], Clients!A:A, 0)), "New Lead")
通过这种设置,您的电子表格就变成了一个会自动对数据进行分类的动态数据库。
向表格添加行仅仅是个开始。Power Automate还提供了其他几个强大的Excel操作:
想象一下,您需要在每周五下午5点发送销售数据的摘要。您可以创建一个每周触发的计划云端流。该流可以使用“列出表中存在的行”来提取本周的数据,使用“创建 HTML 表格”数据操作来格式化它,然后通过Outlook连接器将其发送出去。这可以作为复杂宏报表的绝佳替代方案。
如果要在数据到达Excel之前进行更高级的数据处理,您可能会想了解Power Query:像专业人士一样导入和转换数据,它是Power Automate的绝佳搭档。
随着您构建更复杂的流,可能会遇到一些常见的障碍。以下是解决方法:
如果有人在桌面应用程序中打开了Excel文件,并且没有正确同步到OneDrive,Power Automate可能无法添加行。请始终确保文件已开启“自动保存”并存储在共享的云环境中,以防文件被锁定。
如果您删除并重新创建了Excel表格,Power Automate将失去连接,即使新表格的名称与之前完全相同。因为Excel会为每个表格分配一个隐藏的唯一标识符。如果重新创建表格,您必须返回流中,从下拉菜单中重新选择表格,并重新映射您的动态内容。
当使用“列出表中存在的行”操作时,Power Automate默认将返回的行数限制为256行。如果您的表格有1,000行,将无法获取全部。要解决此问题,请点击操作上的三个点(...),选择设置,打开分页,并将阈值设置为您想要的数字(最高可达100,000)。
从手动录入数据过渡到Power Automate,需要改变您对电子表格的思考方式。您不再仅仅是填入单元格;而是在设计数据系统。要让这些系统完美运行,您的表格中需要强大的Excel公式来处理自动流入的数据。
如果您曾为了处理Power Automate导入的数据而在组合VLOOKUP、INDEX、MATCH或嵌套的IF语句时感到吃力,GPTExcel可以为您提供帮助。只需用日常语言描述您的需求——例如,“我需要一个公式来检查自动生成的日期列,如果超过30天,则返回‘已逾期’”——GPTExcel就会立即为您生成准确、随时可粘贴的公式。
大多数Microsoft 365商业和教育订阅计划中都包含基础版的Power Automate。这包括标准连接器,如Excel Online、Outlook和SharePoint。而高级连接器(如Salesforce或自定义API)则需要独立的Power Automate高级许可证。
可以,但有一些条件。您可以在Power Automate中使用“运行脚本”操作来运行Office脚本(Microsoft提供的一种以TypeScript编写的、现代化且基于云的VBA替代方案)。然而,如果使用云端直接触发传统的`.xlsm` VBA宏,必须使用复杂的本地数据网关才能实现。
不同的触发器有不同的轮询间隔。有些触发器(如按下按钮或HTTP请求)会立即触发,而轮询触发器(如“当创建新文件时”或“当收到电子邮件时”)可能需要几分钟才能识别到事件,具体取决于您的Microsoft 365许可证等级。
可以!Power Automate并不局限于Microsoft生态系统。它有一个全面支持的Google Sheets连接器,允许您像使用Excel Online一样在Google Workspace中添加行、获取行和更新数据。
探索如何使用Power Automate在不使用VBA的情况下实现Excel任务自动化。学习创建事件触发的流、处理数据以及连接其他应用程序。
探索如何使用 VBA 在 Excel 中构建自动化报表系统。通过逐步的代码示例,学习如何提取数据、插入公式、设置单元格格式并导出报表。
开始使用 VBA 在 Excel 中编程。了解“开发工具”选项卡、变量、循环、条件语句,并学习如何从零开始编写你的第一个实用宏程序。