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

如何在Google Sheets中自动捕获并更新期权保证金的历史最高/最低值?

解决Google Sheets期权保证金历史最值自动记录问题

核心需求

在跟踪股票期权的Google Sheets中,当T列(保证金/利润列)动态更新时,自动为每行期权记录历史最低值(V列)和历史最高值(W列),无需手动观察更新。

解决方案:使用Google Apps Script

普通函数(如AGGREGATE)只能基于当前数据集计算最值,无法保留历史状态,因此需要用脚本实现值的持久化对比更新。

步骤1:打开脚本编辑器

在你的Google Sheets中,点击顶部菜单「扩展程序」→「Apps Script」,进入脚本编辑界面。

步骤2:替换默认代码

删除编辑器里的默认代码,粘贴以下脚本:

function onEdit(e) {
  // 指定要处理的工作表名称,替换成你实际的表名
  const targetSheetName = "期权跟踪表";
  const sheet = e.source.getActiveSheet();
  
  // 只处理目标工作表的T列(第20列)更新
  if (sheet.getName() !== targetSheetName || e.range.getColumn() !== 20) return;
  
  const row = e.range.getRow();
  // 跳过表头行(如果表头不是第1行,修改此处数值)
  if (row === 1) return;
  
  const currentMargin = e.range.getValue();
  // 确保更新的是数值类型
  if (isNaN(currentMargin)) return;
  
  // 获取当前行的V列(最低值,第22列)和W列(最高值,第23列)单元格
  const lowCell = sheet.getRange(row, 22);
  const highCell = sheet.getRange(row, 23);
  
  const currentLow = lowCell.getValue();
  const currentHigh = highCell.getValue();
  
  // 更新历史最低值:为空或当前值更小则替换
  if (currentLow === "" || currentMargin < currentLow) {
    lowCell.setValue(currentMargin);
  }
  
  // 更新历史最高值:为空或当前值更大则替换
  if (currentHigh === "" || currentMargin > currentHigh) {
    highCell.setValue(currentMargin);
  }
}

步骤3:配置并授权

  1. 点击编辑器顶部的「保存」按钮,给脚本命名(比如TrackMarginHighLow)。
  2. 第一次运行脚本时会提示授权,按照页面提示完成权限授予(需要允许脚本访问你的表格数据)。

步骤4:测试使用

当T列的保证金数值更新时,对应行的V列(最低值)和W列(最高值)会自动对比历史值并更新:

  • 如果当前保证金比V列现有值更小,V列会自动替换为当前值;
  • 如果当前保证金比W列现有值更大,W列会自动替换为当前值;
  • 首次录入保证金时,V/W列会直接填充当前值作为初始最值。

后续操作

当期权结束后,直接将该行的所有值(包括V/W列的历史最值)复制为数值到历史记录工作表即可,此时V/W列的值已经是静态的历史极值,不会再随原表更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:35:12