求替代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
相关产品推荐
相关产品推荐

