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

如何修改Excel Script实现从C列开始遍历所有列统计着色单元格?

修改后的Excel Script:遍历所有列统计同填充色单元格数量

以下是修改后的脚本,实现从C列开始遍历工作表所有列,完成指定区域的同填充色单元格统计:

function main(workbook: ExcelScript.Workbook) {
    let selectedSheet = workbook.getWorksheet("Sheet1");
    // 获取工作表使用的最后一列索引(从0开始计数)
    let lastColIndex = selectedSheet.getUsedRange().getLastColumn();

    // 从C列(索引2)开始遍历所有列
    for (let colIndex = 2; colIndex <= lastColIndex; colIndex++) {
        // ------------------- 统计Day区域(对应第9行单元格的填充色) -------------------
        // 获取Day统计的顶部单元格(第9行,当前列)
        let dayTopCell = selectedSheet.getCell(8, colIndex);
        let dayColorCode = dayTopCell.getFormat().getFill().getColor();
        // 获取Day统计区域:第26行到第59行,当前列
        let dayRange = selectedSheet.getRangeByIndexes(25, colIndex, 34, 1); // 25是行索引(对应26行),34是行数(59-26+1=34)
        let dayCount = dayRange.getCellCount();
        let dayCounter = 0;

        for (let i = 0; i < dayCount; i++) {
            if (dayRange.getCell(i, 0).getFormat().getFill().getColor() === dayColorCode) {
                dayCounter++;
            }
        }
        // 将统计结果写入顶部单元格
        dayTopCell.setValue(dayCounter);

        // ------------------- 统计Night区域(对应第10行单元格的填充色) -------------------
        // 获取Night统计的顶部单元格(第10行,当前列)
        let nightTopCell = selectedSheet.getCell(9, colIndex);
        let nightColorCode = nightTopCell.getFormat().getFill().getColor();
        // 获取Night统计区域:第60行到第70行,当前列
        let nightRange = selectedSheet.getRangeByIndexes(59, colIndex, 11, 1); // 59是行索引(对应60行),11是行数(70-60+1=11)
        let nightCount = nightRange.getCellCount();
        let nightCounter = 0;

        for (let j = 0; j < nightCount; j++) {
            if (nightRange.getCell(j, 0).getFormat().getFill().getColor() === nightColorCode) {
                nightCounter++;
            }
        }
        // 将统计结果写入顶部单元格
        nightTopCell.setValue(nightCounter);
    }
}

关键改动说明

  • 动态列遍历:通过getUsedRange().getLastColumn()获取工作表最后一列索引,从C列(索引2)开始循环处理每一列
  • 替换硬编码引用:将原脚本中固定的C列(如"C9"、"C26:C59")替换为基于列索引的动态区域获取,使用getCell和getRangeByIndexes实现跨列复用
  • 修复原脚本bug:修正了原脚本中Night统计循环误用dayCount的错误,改为使用nightCount
  • 代码结构优化:将每列的Day、Night统计逻辑封装在循环内,避免重复代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:02:58