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

如何在Excel Power Query中添加基于原列计算的自定义列并解决报错?

Power Query 自定义列 calldelta/putdelta 正确写法

错误原因

你写的M代码沿用了Excel公式的语法,但Power Query的M语言是大小写敏感的函数式语言,和Excel公式语法差异很大:

  • M语言的条件判断是小写的if...then...else...结构,而非Excel的IF(条件, 结果, 备选)格式
  • 原代码中ISNUMBER(FIND(...))的逻辑,在M里可以用更简洁的字符串匹配方式实现
  • 用空字符串""会导致列同时存在数值和文本类型,建议用null保持类型统一

正确的M代码示例

1. 添加 calldelta 列

如果callput列是精确匹配"Call"(而非包含),用以下代码:

= Table.AddColumn(#"Expanded greeks", "calldelta", each if [callput] = "Call" then 100 * [openinterest] * [delta] else null)

如果callput列是包含"Call"字符串(比如值是"USDCALL"这类),改用Text.Contains:

= Table.AddColumn(#"Expanded greeks", "calldelta", each if Text.Contains([callput], "Call") then 100 * [openinterest] * [delta] else null)

2. 添加 putdelta 列

同理,精确匹配"Put"的代码:

= Table.AddColumn(#"Added calldelta", "putdelta", each if [callput] = "Put" then 100 * [openinterest] * [delta] else null)

包含"Put"的代码:

= Table.AddColumn(#"Added calldelta", "putdelta", each if Text.Contains([callput], "Put") then 100 * [openinterest] * [delta] else null)

操作步骤

  1. 打开Power Query编辑器,选中目标表格(即#"Expanded greeks")
  2. 点击「添加列」选项卡 → 「自定义列」
  3. 把上述对应代码粘贴到自定义列的公式框中,修改列名后确认
  4. 添加完calldelta列后,重复操作添加putdelta列

内容的提问来源于stack exchange,提问作者reknirt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:17:22