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

求替代VBA的Office Script:删除早于今日的行

Office Script实现删除早于今日的车辆预订数据行

步骤1:创建Office Script

打开你的Excel表格,点击顶部菜单栏的自动化 → 新建脚本,在脚本编辑器中替换默认代码为以下内容:

function main(workbook: ExcelScript.Workbook) {
  // 指定目标工作表,可替换为你的工作表名称,比如"车辆预订表"
  const sheet = workbook.getActiveWorksheet();
  // 获取今日日期并清除时间部分,避免时间干扰判断
  const today = new Date();
  today.setHours(0, 0, 0, 0);

  // 获取A列已使用的单元格范围(假设第1行是表头,数据从第2行开始)
  const dateColumnRange = sheet.getRange("A:A").getUsedRange();
  const dateValues = dateColumnRange.getValues();
  const totalRows = dateColumnRange.getRowCount();

  // 从最后一行往前遍历删除,防止删除行后索引错乱
  for (let i = totalRows - 1; i >= 0; i--) {
    const cellValue = dateValues[i][0];
    // 仅处理日期类型单元格,且日期早于今日的行
    if (cellValue instanceof Date && cellValue < today) {
      // 获取当前要删除的整行范围
      const targetRow = sheet.getRangeByIndexes(
        dateColumnRange.getRowIndex() + i,
        0,
        1,
        sheet.getUsedRange().getColumnCount()
      );
      targetRow.delete(ExcelScript.DeleteShiftDirection.up);
    }
  }
}

关键说明

  • 工作表指定:如果知道你的预订表名称,把getActiveWorksheet()改成getWorksheet("你的工作表名"),避免切换工作表时出错
  • 表头适配:如果你的表头不是第1行,调整getRange("A:A")为数据起始行,比如数据从第3行开始就用getRange("A3:A")
  • 日期格式:确保A列单元格是日期格式,如果是文本格式的日期,脚本无法识别,需先将A列转换为日期格式
  • 自动运行设置:要实现打开文档时自动执行,点击自动化 → 触发器 → 添加触发器,设置触发条件为「打开工作簿」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:05:00