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

如何以日期为列标题实现动态YTD change计算

动态计算YTD涨跌幅的解决方案

原表格

Sector1/1/20225/1/20226/1/20221Y Min
X10051205
Y18200909
Z02091202

需求说明

新增「YTD涨跌幅」列,计算逻辑为最新日期对应数值 - 当年首个可用日期对应数值,且公式需支持动态适配:后续新增日期列时,无需手动修改公式,自动识别最新/首个日期列并更新计算结果。

预期效果

Sector1/1/20225/1/20226/1/20221Y MinYTD涨跌幅
X100512052
Y1820600942
Z0209120210

动态公式实现(Excel环境)

方案1:兼容全版本Excel的数组公式

假设表格数据从A1单元格开始,在F2单元格(对应X行的YTD涨跌幅)输入以下公式,输入完成后按 Ctrl+Shift+Enter 确认数组公式,再下拉填充至所有行:

=INDEX($2:$2,MAX(IF(ISNUMBER($B2:$D2),COLUMN($B2:$D2),0))) - INDEX($2:$2,MIN(IF(ISNUMBER($B2:$D2),COLUMN($B2:$D2),0)))

逻辑说明:通过ISNUMBER筛选出数值列(日期对应的数值),用MAX/MIN+COLUMN定位最新/首个日期列的位置,再用INDEX提取对应数值做差。新增日期列时,可直接将公式中$B2:$D2的范围扩大为$B2:$ZZ2,预留足够列数避免重复调整。

方案2:Excel 365/2021及以上版本简化公式

利用动态数组函数,无需手动调整范围,新增列自动适配:

=TAKE(FILTER($B2:$ZZ2,ISNUMBER($B2:$ZZ2)),,-1) - TAKE(FILTER($B2:$ZZ2,ISNUMBER($B2:$ZZ2)),,1)

逻辑说明:FILTER自动筛选当前行的所有数值列,TAKE(...,,-1)取最后一列(最新日期数值),TAKE(...,1)取第一列(首个日期数值),二者做差得到YTD涨跌幅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:20:41