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

如何修改Excel Power Query代码实现从指定单元格动态获取日期?

解决Power Query自动读取单元格日期筛选NSE期权链数据的问题

问题背景

在Excel中使用Power Query从NSE印度网站拉取BANKNIFTY期权链数据,目前需每周手动修改日期筛选条件,希望改为自动读取名为Dump的工作表中C43单元格的日期值,现有代码存在语法错误,无法实现需求。

现有代码问题分析

  1. 单元格读取逻辑错误:原代码尝试读取名为BNFDump的工作表第1列第1行数据,与需求的Dump工作表C43单元格不符
  2. 日期格式未匹配:未将单元格日期转换为与NSE接口返回的expiryDate一致的格式,导致筛选失效
  3. 存在重复筛选步骤:连续三次执行相同的行筛选操作,属于冗余代码

修正后的Power Query代码

let
    // 读取Dump工作表C43单元格的日期(行索引从0开始,C43对应索引42,Column3对应C列)
    TargetDate = Excel.CurrentWorkbook(){[Name="Dump"]}[Content]{42}[Column3],
    // 将日期转换为NSE接口返回的"dd-MM-yyyy"格式文本
    FormattedTargetDate = Text.From(TargetDate, "dd-MM-yyyy"),
    // 从NSE拉取BANKNIFTY期权链数据
    Source = Json.Document(Web.Contents("https://www.nseindia.com/api/option-chain-indices?symbol=BANKNIFTY", [Headers=[#"Accept-Encoding"="gzip, deflate", #"Accept-Language"="en-US,en", #"User-Agent"="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 OPR/68.0.3618.206"]])),
    records = Source[records],
    data = records[data],
    #"Converted to Table" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"strikePrice", "expiryDate", "PE", "CE"}, {"strikePrice", "expiryDate", "PE", "CE"}),
    // 使用格式化后的日期筛选数据
    #"Filtered Rows" = Table.SelectRows(#"Expanded Column1", each [expiryDate] = FormattedTargetDate),
    // 展开CE和PE字段
    #"Expanded CE" = Table.ExpandRecordColumn(#"Filtered Rows", "CE", {"openInterest", "changeinOpenInterest", "impliedVolatility", "lastPrice", "change", "underlyingValue"}, {"CE.openInterest", "CE.changeinOpenInterest", "CE.impliedVolatility", "CE.lastPrice", "CE.change", "CE.underlyingValue"}),
    #"Expanded PE" = Table.ExpandRecordColumn(#"Expanded CE", "PE", {"openInterest", "changeinOpenInterest", "impliedVolatility", "lastPrice", "change", "underlyingValue"}, {"PE.openInterest", "PE.changeinOpenInterest", "PE.impliedVolatility", "PE.lastPrice", "PE.change", "PE.underlyingValue"})
in
    #"Expanded PE"

关键修改说明

  • 单元格读取修正:改用Excel.CurrentWorkbook(){[Name="Dump"]}[Content]{42}[Column3]定位C43单元格,其中{42}是因为Power Query行索引从0开始(第43行对应索引42),Column3对应工作表的C列
  • 日期格式统一:通过Text.From(TargetDate, "dd-MM-yyyy")将单元格日期转换为NSE接口返回的日期格式(例如25-09-2024),确保筛选匹配
  • 冗余代码删除:移除了重复的#"Filtered Rows1"和#"Filtered Rows2"步骤,仅保留一次有效筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:47:09