我想创建一个条件单元格结构。
假设B列有一个实时得分的值:
在C列中,我想创建一个if条件,如下所示:
如果为B>10,则C为YES。
然而,正如我所提到的,B列作为实时得分,即使B之后降到10以下,我也希望C保持不变。因此,本质上,我希望C在我的实时得分条件达到时保持为yes。
请告诉我怎么做。
发布于 2021-05-18 20:42:39
您可以通过以下代码使用Apps脚本编辑器:
function liveScorePass(){
var spreadsheet = SpreadsheetApp.getActiveSheet();
var i = 0;
Logger.log(i);
while (i == 0){
Logger.log('B1');
if (spreadsheet.getRange('B1').getValue() > 10){
spreadsheet.getRange('C1').setValue("YES");
Logger.log('C1');
i = 1;
}
else{
spreadsheet.getRange('C1').setValue("NO");
}
}
}
/* OPTIONAL FUNCTION*/
function onOpen(){
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Live Score Menu')
.addItem('Reset Script', 'liveScorePass') //creates a menu to start the script again
.addToUi();
var spreadsheet = SpreadsheetApp.getActiveSheet();
liveScorePass(); //starts the script whenever you open the spreadsheet.
}它主要检查您的单元格B1是否大于10。如果不是,脚本将继续不确定地运行,但当它是时,C1的值被设置为YES,i被设置为1,脱离while循环,不再独立于C1的值更改B1的值。
编辑
要将其用作函数而不是工具栏菜单上的选项卡,您可以像调用公式=LIVESCOREPASS()一样调用它。然而,这涉及到三件事:
set*()方法,因此您需要调整您的代码,只剩下以下代码:
function LIVESCOREPASS(){
var spreadsheet = SpreadsheetApp.getActiveSheet();
var i = 0;
Logger.log(i);
while (i == 0){
Logger.log('B1');
if (spreadsheet.getRange('B1').getValue() > 10){
var result1 = "YES";
Logger.log('C1');
i = 1;
return result1;
}
else{
var result2 = "NO";
return result2;
}
}
}
B1)时,该函数都会被重置,因此,如果它降至10或更低,则会丢失修复"YES“。Here您可以找到有关自定义函数的文档。
https://stackoverflow.com/questions/67578307
复制相似问题