【发布时间】:2021-03-06 17:52:00
【问题描述】:
我对编程非常陌生,我正在尝试在 google 表格中的一维数组中找到两个连续的值,并且需要在 google 表格中以粗体突出显示答案。第一个值应大于 5(例如位于单元格 D10 中),下一个值应小于 4.99(位于 E10 中)。我尝试了两种方法,但似乎无法让代码工作 - 我不知道我是否过度复杂化了问题。第一种方法是将行分成 2 个单独的元素数组,这样如果元素 J 大于 5,并且元素 k(查看 J 旁边的元素)小于 4.99。
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var ui2 = SpreadsheetApp.getUi();
var data1 = ss.getRange(10,2,1,20).getValues()[0]; //Variable 1 - to find the ON value B10:U10
var data2 = ss.getRange(10,3,1,20).getValues()[0]; //to find the OFF value;
var onA = 5.00;
var on = data1 > onA;
var offA = 4.99;
var off = data2 < offA;
for(var i = 0; i < 20; i++){
for(var j = 0; j < 20; j++){
if(data1[i] < 5.00 && data2[j] < 4.99){
ss.getRange(10,2,1,20).setValue(data1[i]).setFontSize(12).setFontWeight("bold");
ss.getRange(10,3,1,20).setValue(data2[j]).setFontSize(12).setFontWeight("bold");
break;
}
else {
ui2.alert("the values are not found");
break;
}}}}
我的另一种方法不是将单元格作为单个数组进行搜索 - 这很有效,但是一旦我向 else 语句添加一条消息以声明未找到值,它就会以与循环相同的次数重复此警报。
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var ui2 = SpreadsheetApp.getUi();
for(var j = 2; j < 22; j++){ // j is column number
for(var k = j+1; k < 23; k++){
var result = ss.getRange(10,j).getValue();
var result2 = ss.getRange(10,k).getValue();
var resulta = result > 5.00;
var resultb = result2 < 4.99;
if (resulta == true && resultb == true) {
ss.getRange(10,j).setValue(result).setFontSize(12).setFontWeight("bold");
ss.getRange(10,k).setValue(result2).setFontSize(12).setFontWeight("bold");
break;
} else {
break;
ui2.alert('Values not found');
}}}}
任何帮助都会令人惊叹,非常感谢!
【问题讨论】:
-
我能问一下您当前的剧本问题吗?
-
看起来
getRange参数错误,因为提到了 A3 和 C3,但getRange方法中的行是 10,而不是 3。
标签: javascript arrays if-statement google-apps-script