使用 Office 脚本从一列中删除特定值并重命名 Excel 中的另一个值

问题描述 投票:0回答:1

我需要有关 ExcelScript 的帮助,我需要 Column J 过滤器

删除 J 列中值为“已取消”的整个行 将 J 列中的任何值“进行中”重命名为“已分配” 将 J 列中带有“待处理”的任何值重命名为“已分配” 将 J 列中带有“已关闭”的任何值重命名为“已解决”

有人可以帮助我吗?

谢谢

我尝试根据范围过滤然后删除

your text
删除选定工作表上的 40:90 范围 selectedSheet.getRange("40:90").delete(ExcelScript.DeleteShiftDirection.up);

your text
清除所选工作表上的自动过滤器 selectedSheet.getAutoFilter().clearCriteria();

your text
在selectedSheet上设置范围J2 selectedSheet.getRange("J2").setValue("已解决");

your text
自动填充范围 selectedSheet.getRange("J2").autoFill("J2:J103", ExcelScript.AutoFillType.fillDefault);

excel delete-row office-scripts
1个回答
0
投票
function main(workbook: ExcelScript.Workbook) {
    const dataSheet = workbook.getActiveWorksheet();
    const dataRange = dataSheet.getUsedRange(true);
    const dataVals = dataRange.getTexts();
    let outVals: [] = [];
    const colIndex = 9; // Col J
    let delRowsCnt = 0;
    dataVals.forEach(row =>{
        switch (row[colIndex]){
            case "In Progress":
                row[colIndex] = "Assigned";
                break;
            case "Pending":
                row[colIndex] = "Assigned";
                break;
            case "Closed":
                row[colIndex] = "Resolved";
                break;              
            case "Canceled":
                row[colIndex] = "$DEL$";
                break;
        }
        if (row[colIndex] === "$DEL$") {
            delRowsCnt--;
        } else {
            outVals.push(row);
        } 
    })
    // console.log(outVals);
    dataRange.clear(ExcelScript.ClearApplyTo.contents);
    dataRange.getResizedRange(delRowsCnt,0).setValues(outVals);
}

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.