Power Query报错[Expression.Error]:无法将Function转List类型求解决
错误分析
- 误用
each关键字:你写的each Source[#"first"] - Source[#"second"]会生成一个函数,但Table.FromColumns要求传入的参数是列表,这就是触发「无法将Function类型转换为List类型」错误的核心原因。 - 源列类型不匹配:
first和second列存储的是文本字符串,直接做减法运算会失败,必须先转换为数值类型。
修正方案
推荐两种实现方式,按需选择:
方式1:修正Table.FromColumns写法
先将文本列转为数值,再生成差值列表:
let Source = Table.FromRecords({ [row = 1, first = "1234", second="567"], [row = 2, first = "9876", second="543"], [row = 3, first = "5437", second="890"], [row = 4, first = "2321", second="550"] }), // 将文本列转为数值列 ConvertToNumber = Table.TransformColumns(Source, { {"first", each Number.From(_)}, {"second", each Number.From(_)} }), // 生成差值列表,去掉each直接计算两列的差 Source2 = Table.FromColumns( {ConvertToNumber[row], ConvertToNumber[first] - ConvertToNumber[second]}, {"row","diff"} ) in Source2
方式2:更直观的添加列方法(推荐)
用Table.AddColumn直接生成差值列,逻辑更清晰:
let Source = Table.FromRecords({ [row = 1, first = "1234", second="567"], [row = 2, first = "9876", second="543"], [row = 3, first = "5437", second="890"], [row = 4, first = "2321", second="550"] }), // 添加差值列,同时完成类型转换和减法运算 AddDiffColumn = Table.AddColumn(Source, "diff", each Number.From([first]) - Number.From([second]) ), // 保留需要的列(可选操作) KeepColumns = Table.SelectColumns(AddDiffColumn, {"row", "diff"}) in KeepColumns
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

