Office 脚本 - 循环

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

我有一个工作簿,只能由几个人通过 Excel Online 访问。它有以大约 20 个人的名字命名的工作表(例如用户名:JSmith、JDoe 等),并且这些工作表上有具有相同名称 (JSmith) 的表。表中有一些相当复杂的公式,由于某种原因,我们发现这些公式会随机更改以引用其他人的表。由于公式只应该引用它们自己的表,因此在任何公式中实际上都不应该引用某人的用户名(例如 =sumif(JSmith[column name]...) 与 sumif([column name])。

我想编写一个每天通过 PowerAutomate 运行的脚本,该脚本将为每个人的用户名在每张纸上进行查找/替换。我在名为 Ref 的工作表上有一个所有用户名的列表,因此我需要循环遍历每个工作表,然后循环遍历每个用户名。我大致了解如何在 VBA 中执行此操作,但我对 Office 脚本感到困惑,因此我们将不胜感激!如果需要,我可以上传示例文件。

我尝试做一个记录来看看代码可能是什么样子,但结果非常手动,并且不包括循环,这是我缺少的关键部分,不确定如何放入。

loops for-loop office-scripts excel-online
1个回答
0
投票
  • 假设工作表
    Ref
    上的名单从单元格A1开始
function main(workbook: ExcelScript.Workbook) {
    let refSheet = workbook.getWorksheet("Ref");
    // get name list on Ref sheet
    let nameList = refSheet.getUsedRange().getValues();
    // loop through name list
    nameList.forEach( cell => {
        let personName = cell[0].toString();
        console.log(personName)
        // get the sheet named as person name
        let personSheet = workbook.getWorksheet(personName);
        if(refSheet){
            // get the table (ListObject)
            let personTab = personSheet.getTable(personName);
            if(personTab){
                // replace the formulas
                personTab.getRange().replaceAll(personName, "", { completeMatch: false, matchCase: false });
            }
        }
    }
    )
}
© www.soinside.com 2019 - 2024. All rights reserved.