我有表格中的库存清单,为了避免混乱,我想要一个单元格来添加和删除输入到库存中的值并清除,而不是将数学留给输入它的人。
B1 = 商品名称,B2 = 库存,B3 = 添加库存,B4 删除库存
因此,一旦在 B3 和 B4 中输入值,单元格就会被清除。
我可以让其中之一工作,但不能同时工作。即使为我指明了正确的方向,我也会很感激,因为我所做的所有研究都让我陷入了兔子洞。我直接使用细胞来简化学习。
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var AddST = ss.getRange("C2").getValue();
var Stock = ss.getRange("B2").getValue();
var RemST = ss.getRange("D2").getValue();
function addStockLevel() {
ss.getRange("B2").setValue(Stock + AddST);
ss.getRange("C2").clear();
}
function removeStockLevel() {
ss.getRange("B2").setValue(Stock - RemST);
ss.getRange("D2").clear();
}
}
要在名为
Sheet1
、Sheet2
和 Sheet3
的工作表中执行此操作,但不在任何其他工作表上执行此操作,请使用以下命令:
'use strict';
/**
* Simple trigger that runs each time the user manually edits the spreadsheet.
*
* @param {Object} e The onEdit() event object.
*/
function onEdit(e) {
if (!e) {
throw new Error(
'Please do not run the onEdit(e) function in the script editor window. '
+ 'It runs automatically when you hand edit the spreadsheet. '
+ 'See https://stackoverflow.com/a/63851123/13045193.'
);
}
adjustStockLevel_(e);
}
/**
* Adjusts stock level.
*
* @param {Object} e The onEdit() event object.
*/
function adjustStockLevel_(e) {
if (!e.value || e.range.rowStart !== 2 || e.range.columnStart < 3 || e.range.columnStart > 4) return;
const sheet = e.range.getSheet();
if (!sheet.getName().match(/^(Sheet1|Sheet2|Sheet3)$/i)) return;
const _get = (rangeA1) => Number(sheet.getRange(rangeA1).getValue()) || 0;
const stock = _get('B2');
const add = _get('C2');
const sub = _get('D2');
sheet.getRange('B2').setValue(stock + add - sub);
sheet.getRange('C2:D2').clearContent();
}
要使其在其他工作表上工作,请调整 match()
中的
正则表达式。