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

求可删除含高亮单元格行的Excel Office Script

Excel Office Script:删除包含高亮单元格的行

你提到的录制器无法记录筛选/删除高亮行的操作,下面是基于你现有脚本修改后的完整解决方案,实现先设置重复值高亮,再删除所有包含高亮单元格的行:

function main(workbook: ExcelScript.Workbook) {
    let selectedSheet = workbook.getActiveWorksheet();
    // 1. 为B列设置重复值高亮的条件格式(保留你原有的逻辑)
    let conditionalFormatting = selectedSheet.getRange("B:B").addConditionalFormat(ExcelScript.ConditionalFormatType.presetCriteria);
    conditionalFormatting.getPreset().getFormat().getFont().setColor("#9C0006");
    conditionalFormatting.getPreset().getFormat().getFill().setColor("#FFC7CE");
    conditionalFormatting.getPreset().setRule({criterion: ExcelScript.ConditionalFormatPresetCriterion.duplicateValues});

    // 2. 获取所有应用了该条件格式的单元格
    const formattedCells = conditionalFormatting.getRange().getSpecialCells(ExcelScript.SpecialCellType.cellTypeAllFormatConditions);
    
    if (!formattedCells) {
        console.log("没有找到高亮单元格");
        return;
    }

    // 3. 收集所有需要删除的行号,去重
    const rowsToDelete = new Set<number>();
    formattedCells.getAreas().forEach(area => {
        const rowStart = area.getRowIndex();
        const rowEnd = rowStart + area.getRowCount() - 1;
        for (let i = rowStart; i <= rowEnd; i++) {
            rowsToDelete.add(i + 1); // Excel行号从1开始,API返回的索引是0开始
        }
    });

    // 4. 将行号倒序排列,从下往上删除(避免删除行导致后续行号偏移)
    const sortedRows = Array.from(rowsToDelete).sort((a, b) => b - a);
    
    sortedRows.forEach(row => {
        selectedSheet.getRow(row).delete(ExcelScript.DeleteShiftDirection.up);
    });

    console.log(`已删除 ${sortedRows.length} 行包含高亮单元格的记录`);
}

关键逻辑说明:

  • 定位高亮单元格:通过getSpecialCells(ExcelScript.SpecialCellType.cellTypeAllFormatConditions)精准获取所有应用了条件格式的单元格
  • 行号去重:用Set存储行号,避免同一行存在多个高亮单元格时重复执行删除操作
  • 倒序删除:从最大行号开始删除,防止删除行后后续行的索引偏移,导致漏删或误删

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:43:18