如何实现Excel函数接收Power Automate Desktop的List作为入参
问题根因
Power Automate Desktop(以下简称PAD)的List类型虽然底层等价于一维数组,但跨平台传递给Excel自定义函数时,默认会被识别为单个结构化对象,不会自动展开为数组参数,因此直接传入会触发参数类型不匹配报错。
可行解决方案
方案1:PAD侧转分隔字符串 + Excel侧拆分(全版本兼容)
- PAD端新增「将列表转换为文本」动作,分隔符设置为不会出现在元素内容中的特殊字符(无特殊场景用英文逗号即可),将生成的拼接字符串作为参数传递给Excel函数
- Excel自定义函数侧新增类型判断逻辑,自动将收到的字符串转换为数组再处理,VBA自定义函数参考写法:
Function 你的自定义函数(输入参数 As Variant) As Variant Dim arr As Variant ' 兼容PAD传入的拼接字符串场景 If TypeName(输入参数) = "String" Then arr = Split(输入参数, ",") ' 兼容手动传入数组的原生场景 ElseIf IsArray(输入参数) Then arr = 输入参数 Else ' 单值场景兼容 ReDim arr(0 To 0) arr(0) = 输入参数 End If ' 此处写入你原本的数组处理逻辑 ' 示例:返回数组长度 你的自定义函数 = UBound(arr) - LBound(arr) + 1 End Function
方案2:Office Scripts专属适配(适合Power Automate云流+Office 365环境)
如果你的Excel函数是通过Office Scripts实现的,无需修改PAD侧逻辑:
- 直接在Office脚本的参数定义中,将对应参数的类型声明为
Array<number>/Array<string>(根据你的List元素类型调整) - PAD调用「运行Office脚本」动作时,会自动完成
List类型到脚本数组参数的类型映射,无需额外处理
方案3:动态数组环境直接传递(Excel 365/2021专属)
- PAD侧新增「将列表转换为JSON」动作,生成格式为
[元素1,元素2,元素3...]的JSON数组字符串 - 调用函数时将该字符串传入,Excel侧用
TEXTSPLIT+VALUE组合将字符串转换为可用数组,公式示例:=你的自定义函数(VALUE(TEXTSPLIT(SUBSTITUTE(SUBSTITUTE(传入的JSON字符串,"[",""),"]",""),",")))
内容的提问来源于stack exchange,提问作者Thomas Finucane
相关产品推荐
相关产品推荐

