首页 > 解决方案 > 历史最高脚本 - 当 A 列中的整数较大时覆盖 B 列

问题描述

我正在尝试创建一个显示两列的列表;第一列银行账户列表的实时余额(使用工作表中的其他信息计算),第二列显示同一行中相应账户的历史最高值。

因此,如果实时余额(在 A 列中)大于之前的历史最高余额(在 B 列中),那么 A 列将覆盖 B 列。如果 A 列小于 B 列,B 列将继续显示历史最高点。

如果当前余额为 0 并且从未有过正余额 - 因此表明它是一个新账户,没有以前的历史最高点 - B 列中显示的历史最高点也将显示 0。

但重要的是,在触发脚本后,A 列中显示的值可以保持为实时计算,并且脚本不会覆盖 A 列中数字后面的 SUM 函数。

我是脚本新手,并且已经为此苦苦挣扎了一段时间。如果有人可以提供任何帮助,我将不胜感激。

标签: google-apps-scriptgoogle-sheets

解决方案


您必须使用Range Class中的getDisplayValuessetValue方法。

第一种方法获取单元格中显示的值,无论它来自公式还是手动估算的值。这将为您返回一个 2D 数组,因此您使用 2 个 for 循环遍历它将比较两列中的所有值。然后,使用Switch语句来比较您需要的每个条件中的值。

知道了这一点,我可以给你一些伪代码提示:

function compareColumns(){
   var sprsheet = SpreadsheetApp.getActiveSpreadsheet();
   var columnsAB = sprsheet.getRange('A1:B10').getDisplayValues(); 

  for (var i = 0; i < columnsAB.length; i++){


   for (var j = 0; j < columnsAB[i].length; j++){

      //here you can use the Switch to compare the values of columnsAB[i][0] with columnsAB[i][1]

      //if condition meets:
      sprsheet.getRange('B'+i).setValue(columnsAB[i][0]);

   }
 }



推荐阅读