You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:34:55