我在仓库里工作,我正在使用Google表格跟踪库存。加减很容易,但是我的任务是创建一个“保留”系统:
为将来的工作预留了许多库存。当订购和接收该库存时,储备数量“已满足”,并减少了接收到的件数。像“添加”和“减”功能一样进行设置的问题在于,并非所有收到的库存都被“保留”,而我的保留总数最终变为“ -57”,“-72”,“-112”等。>
我有一个很大的表单响应数据集,记录在以下四列中:时间戳记,项目ID#,操作(添加,删除或保留)和数量。我正在寻找一种使用D列“ QTY”中的值在E列中为每个唯一商品ID#创建运行提示的方法。我需要任何值<0返回“ 0”。
我已经能够创建一个连续的计算公式,一次满足一个ID号的条件。但是,为了避免为每个Item ID#创建单独的列,我需要弄清楚如何分别将其应用于每个唯一的Item ID#,并将其排列在E列中,以便自动计算每个新的表单响应。
=if(C2="RESERVE",E1+D2,if(and(C2="ADD",(E1+D2)<0),0,E1+D2))
与我所能找到的解决方案最接近的是user79865为此问题创建的脚本,标题为:"Running Total In Google Sheets with Array"。不幸的是,尝试将此插入Google Sheets脚本编辑器会给我一个错误弹出窗口: TypeError:无法从未定义中读取属性“ length”。 (第2行,文件“ runningtotal”)
我没有编程背景,也从未梦想过我会只看代码来使运行状况保持平衡。
如果有人能对此提供任何见解,修复或替换脚本或提供ARRAYFORMULA解决方案,我将非常感谢!
function runningTotal(names, dates, amounts) {
var sum, totals = [], n = names.length;
if (dates.length != n || amounts.length != n) {
return 'Error: need three columns of equal length';
}
for (var i = 0; i < n; i++) {
if (names[i][0]) {
sum = 0;
for (var j = 0; j < n; j++) {
if (names[j][0] == names[i][0] && dates[j][0] <= dates[i][0]) {
sum = sum + amounts[j][0];
}
}
}
else {
sum = '';
}
totals.push([sum]);
}
return totals;
}