需要一个脚本来检测单元格的数值何时发生变化,并改变行颜色
In need of a script to detect when a cell's numeric value has changed, and change the row colour
我目前正在使用 Google 表格创建一个库存系统,我已经 运行 解决了最后一个问题。我正在使用条件格式来调整行的颜色等...当从 "Updated On Cart?" 列中选择了某个下拉选项时,但是我需要一个脚本(因为仅使用条件格式是不可能的) 以检测 "QTY" 单元格何时从其当前值更改/更新(更改为任何值,而不仅仅是特定值)。
我浏览了 25 页 Google,在 Whosebug 上发了无数帖子,但都无济于事。
这是当前系统的图像。
所以基本上当用户更改库存项目的数量时,该行应该改变颜色。
如果有人知道我可以使用的脚本,或者可以指出 Google 电子表格解决方案的正确方向,那就太好了。
一些脚本可以提供帮助:
function onEdit(t) {
var workSheetName = 'Sheet1'; // change sheet name to yours
var targetRangeAddress = 'E2:E'; // change if needed
var ss = SpreadsheetApp.getActiveSheet();
var sn = ss.getName();
if (sn == workSheetName) {
var myr = ss.getRange(targetRangeAddress);
var tr = t.range;
if (t.oldValue != tr.getValue() && t.oldValue != undefined) {
if (RangeIntersect(tr, myr)) {
var cr = ss.getRange(tr.getRow(),1,1,ss.getLastColumn());
cr.setBackgroundRGB(200, 200, 200); // change if needed
}
}
}
}
function RangeIntersect(R1, R2) {
var LR1 = R1.getLastRow();
var Ro2 = R2.getRow();
if (LR1 < Ro2) return false;
var LR2 = R2.getLastRow();
var Ro1 = R1.getRow();
if (LR2 < Ro1) return false;
var LC1 = R1.getLastColumn();
var C2 = R2.getColumn();
if (LC1 < C2) return false;
var LC2 = R2.getLastColumn();
var C1 = R1.getColumn();
if (LC2 < C1) return false;
return true;
}
或者可能只是将列 (E:E) 的值复制到它旁边的列 (F:F) 并为 all table range[=18= 设置条件格式规则] 用你的公式:=$E2<>$F2
我目前正在使用 Google 表格创建一个库存系统,我已经 运行 解决了最后一个问题。我正在使用条件格式来调整行的颜色等...当从 "Updated On Cart?" 列中选择了某个下拉选项时,但是我需要一个脚本(因为仅使用条件格式是不可能的) 以检测 "QTY" 单元格何时从其当前值更改/更新(更改为任何值,而不仅仅是特定值)。
我浏览了 25 页 Google,在 Whosebug 上发了无数帖子,但都无济于事。
这是当前系统的图像。
所以基本上当用户更改库存项目的数量时,该行应该改变颜色。
如果有人知道我可以使用的脚本,或者可以指出 Google 电子表格解决方案的正确方向,那就太好了。
一些脚本可以提供帮助:
function onEdit(t) {
var workSheetName = 'Sheet1'; // change sheet name to yours
var targetRangeAddress = 'E2:E'; // change if needed
var ss = SpreadsheetApp.getActiveSheet();
var sn = ss.getName();
if (sn == workSheetName) {
var myr = ss.getRange(targetRangeAddress);
var tr = t.range;
if (t.oldValue != tr.getValue() && t.oldValue != undefined) {
if (RangeIntersect(tr, myr)) {
var cr = ss.getRange(tr.getRow(),1,1,ss.getLastColumn());
cr.setBackgroundRGB(200, 200, 200); // change if needed
}
}
}
}
function RangeIntersect(R1, R2) {
var LR1 = R1.getLastRow();
var Ro2 = R2.getRow();
if (LR1 < Ro2) return false;
var LR2 = R2.getLastRow();
var Ro1 = R1.getRow();
if (LR2 < Ro1) return false;
var LC1 = R1.getLastColumn();
var C2 = R2.getColumn();
if (LC1 < C2) return false;
var LC2 = R2.getLastColumn();
var C1 = R1.getColumn();
if (LC2 < C1) return false;
return true;
}
或者可能只是将列 (E:E) 的值复制到它旁边的列 (F:F) 并为 all table range[=18= 设置条件格式规则] 用你的公式:=$E2<>$F2