【问题标题】:Unchanged Cell after filling a condition in google spreadsheet在谷歌电子表格中填写条件后未更改的单元格
【发布时间】:2021-05-17 23:54:18
【问题描述】:

我想创建一个条件单元格结构。

假设 B 列的值是实时比分:

在 C 列中,我想创建一个 if 条件,如下所示:

如果 B>10,则 C 为 YES。

但是,正如我所提到的,B 列作为实时比分,即使 B 之后低于 10,我希望 C 保持不变。所以本质上,我希望 C 保持在是,一旦我的实时比分条件达到。

请告诉我怎么做。

【问题讨论】:

  • 你好@JoshMakan!我了解您在 B 列中有一个不断变化的值,如果它符合条件,您希望在另一列上运行一些操作。如果我对这种情况的理解是正确的,那么您可以在Apps Script 中使用triggers 轻松完成此操作。这对您来说是一个有效的解决方案吗?

标签: google-sheets google-sheets-formula google-sheets-api


【解决方案1】:

您可以通过以下代码使用 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 的值设置为 YESi 设置为1,脱离while循环,不再独立于B1的值改变C1的值。

编辑

要将其用作函数而不是工具栏菜单上的选项卡,您可以将其称为公式=LIVESCOREPASS()。然而,这牵涉到三件事:

  1. 您不能使用任何 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;
        }
      }
    }
  1. 它不允许更改您正在使用的单元格或其相邻单元格以外的任意单元格(这里不是问题);

  2. 每次更新引用的单元格 (B1) 时,函数都会重置,因此如果“YES”降至 10 或以下,您将失去修复。

Here你可以找到自定义函数的文档。

【讨论】:

  • 您好,非常感谢。我如何将它作为一个函数合并到谷歌电子表格中。它现在以标签的形式出现。我找不到它作为一个函数。
  • 我会用代码更新答案,但它不会起作用,因为它会在您每次更新 B1 时自动重置。我可以向您展示如何将它用作函数,但是您需要其他方式来实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多