首页 > 解决方案 > Google 表格脚本 - 通过生成的值范围减少单元格的值

问题描述

我有一个具有值(即 1,000)和 3 个单元格范围的单元格,它将根据某些条件生成一个值。当范围在范围内的 3 个单元格中的任何一个中生成一个值时,我希望我的原始 1,000 减去生成的总和。

这可能吗?我一直在尝试一些脚本,但无法做到正确。

function addValue() { var sheetName = "POK_1" ; 
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
 var range = ss.getRange("A1"); var value = "J3" }

标签: google-apps-scriptgoogle-sheetsgoogle-apps-script-editor

解决方案


尝试这个:

function onEdit(e){
  Logger.log(e);
  if (e.range.getA1Notation() == "A2" || e.range.getA1Notation() == "A3" || e.range.getA1Notation() == "A4"){ // Only run if any of the three values are changed.
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("first");
    var data = ss.getRange("A1:A4").getValues();// The main value (A1 and the ones to subtract (A2:A4).
    data[0][0] = data[0][0] - (data[1][0] + data[2][0] + data[3][0]);
    ss.getRange("A1").setValue(data[0][0]);
  }
}

每次更改三个值中的任何一个时,此函数都会自动从主值中减去所有三个值。为简单起见,这假设您的值在其中A1:A4。您还应该查看本教程以了解如何使用 GAS 和表格。

更新

此代码将是两个单元格之间的简单减法,并将结果分配给第一个单元格:

function sub(){
  var ss = SpreadsheetApp.getActiveSheet();
  var a = ss.getRange("B1").getValue();
  var b = ss.getRange("C1").getValue();
  ss.getRange("B1").setValue(a-b);
}

推荐阅读