我有一个工作簿,只能由几个人通过 Excel Online 访问。它有以大约 20 个人的名字命名的工作表(例如用户名:JSmith、JDoe 等),并且这些工作表上有具有相同名称 (JSmith) 的表。表中有一些相当复杂的公式,由于某种原因,我们发现这些公式会随机更改以引用其他人的表。由于公式只应该引用它们自己的表,因此在任何公式中实际上都不应该引用某人的用户名(例如 =sumif(JSmith[column name]...) 与 sumif([column name])。
我想编写一个每天通过 PowerAutomate 运行的脚本,该脚本将为每个人的用户名在每张纸上进行查找/替换。我在名为 Ref 的工作表上有一个所有用户名的列表,因此我需要循环遍历每个工作表,然后循环遍历每个用户名。我大致了解如何在 VBA 中执行此操作,但我对 Office 脚本感到困惑,因此我们将不胜感激!如果需要,我可以上传示例文件。
我尝试做一个记录来看看代码可能是什么样子,但结果非常手动,并且不包括循环,这是我缺少的关键部分,不确定如何放入。
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 });
}
}
}
)
}