如果单元格“ y”大于单元格“ x”,则自动将单元格“ y”复制到单元格“ x”

时间:2019-11-22 08:46:31

标签: google-apps-script google-sheets

正如标题所说明的,我需要创建一个解决方案(我认为是最有可能的脚本),因此,如果B1(此单元格具有SUM函数)中的值大于A1(固定整数),则显示的值B1中的内容将被复制到A1中。

如果B1小于A1,则A1将保持不变。

这将始终用于计算股票交易余额。 A1代表历史最高水平,B1代表当前余额。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您可以使用Google Apps脚本轻松实现此功能。为此,请从工作表文档转到“工具”>“脚本编辑器”。在此复制并粘贴以下代码:

function myFunction() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('YOUR_SHEET_NAME');
  var nRows = sheet.getDataRange().getHeight();
  var values = sheet.getRange(1, 1, nRows, 2).getValues();

  for (var i=1; i<nRows; i++) {
    if (values[i][0] == "") break;
    if (values[i][0] < values[i][1]) values[i][0] = values[i][1];
  }

  sheet.getRange(1, 1, nRows, 2).setValues(values);
}

根据需要调整变量(即替换YOUR_SHEET_NAME)。现在,保存文档,单击“选择功能”下拉菜单,然后选择myFunction。点击“播放”按钮。现在应该应用您建议的转换。

最后,为了了解发生了什么,我建议您查看以下链接:

编辑

function myFunction() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var nRows = sheet.getDataRange().getHeight();
  var valuesA = sheet.getRange(2, 1, nRows, 1).getValues();
  var valuesB = sheet.getRange(2, 2, nRows, 1).getValues();
  var valuesE = sheet.getRange(2, 5, nRows, 1).getValues();
  var valuesF = sheet.getRange(2, 6, nRows, 1).getValues();

  for (var i=0; i<nRows; i++) {
    var valueA = valuesA[i][0];
    var valueB = valuesB[i][0];

    if (valueA == "") break;
    if (valueA <= valueB) {
      var formula = Utilities.formatString('=SUM(E%s, F%s)', i+2, i+2);
      sheet.getRange(i+2, 1).setFormula(formula);
    }
  }
}