我有两个CFs在一张纸上,我想保留在复制/粘贴,你可以看到范围和公式如下。
CF1 Range : B3:H1001
CF1 Formula : =($A3<>"")*(B3="") //This one higlights the empty cells in a given range
CF2 Range : A3:R1001 // This one highlights the row if the cell in R column is No.
CF2 Formula : =$R:$R="No"
是否有办法保护这些CFs或在复制粘贴后再次应用它们?谢谢!
发布于 2020-03-01 22:50:19
当我从另一个范围复制粘贴时,我正在失去我创建的条件格式。所以我希望它们保持格式化,或者在复制/粘贴之后再次应用它们。
从上面的答复中,我可以理解您希望保留条件格式,即=($A3<>"")*(B3="")
表示B3:H1001
,=$R:$R="No"
表示A3:R1001
,即使范围被复制并粘贴到B3:H1001
和A3:R1001
中。
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一。
问题和解决办法:
不幸的是,在现阶段,没有任何方法可以直接保护Google脚本中的条件格式。因此,在这种情况下,作为一种解决办法,我建议在使用OnChange事件触发器更改条件格式和单元时覆盖条件格式。
流动:
用法:
1.复制和粘贴示例脚本
请复制并粘贴以下示例脚本。
示例脚本:
请设置工作表名。
function onChange(e) {
const sheetName = "Sheet1"; // Please set the sheet name.
if (e.source.getActiveSheet().getSheetName() != sheetName || e.changeType != "OTHER") return;
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var rules = sheet.clearConditionalFormatRules();
const rule1 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("B3:H")])
.setBackground("green")
.whenFormulaSatisfied('=($A3<>"")*(B3="")').build();
const rule2 = SpreadsheetApp.newConditionalFormatRule()
.setRanges([sheet.getRange("A3:R")])
.setBackground("green")
.whenFormulaSatisfied('=$R:$R="No"').build();
sheet.setConditionalFormatRules([rule1, rule2]);
SpreadsheetApp.flush(); // This line might not be required.
}
2.安装OnChange事件触发器
3.试验运行
作为测试运行,请复制并粘贴sheetName
中的范围。这样,脚本由OnChange事件触发器运行。
注意:
参考文献:
https://stackoverflow.com/questions/60472732
复制相似问题