Я работаю на складе и использую Google Sheets для отслеживания запасов.Добавить и вычесть несложно, но передо мной была поставлена задача создания «резервной» системы:
Несколько штук запаса зарезервированы для предстоящих работ.Когда этот запас заказан и получен, количество запаса «удовлетворяется» и уменьшается на количество полученных штук.Проблема с его настройкой, аналогично функциям ADD и SUBTRACT, заключается в том, что не все полученные запасы являются «зарезервированными», а итоговые значения моего RESERVE в итоге составляют «-57», «-72», «-112» и т. Д.
У меня большой набор данных ответов формы, зарегистрированных в четырех столбцах: метка времени, идентификатор элемента №, действие (ADD, SUBTRACT или RESERVE) и QTY.То, что я ищу, - это способ создания подсчета в столбце E для каждого уникального элемента ID # с использованием значений в столбце D «QTY».Мне нужно, чтобы любое значение <0 возвращало «0». </p>
Пример листа
I 'я смог создать формулу подсчета, которая удовлетворяет моим условиям для одного ID элемента за раз.Чтобы избежать создания отдельного столбца для каждого идентификатора элемента №, мне нужно выяснить, как применить его отдельно к каждому уникальному идентификатору элемента №, и распределить его по столбцу E, чтобы каждый новый ответ формы вычислялся автоматически.
=if(C2="RESERVE",E1+D2,if(and(C2="ADD",(E1+D2)<0),0,E1+D2))
Самым близким к решению, которое мне удалось найти, является сценарий, созданный пользователем 79865 для этого вопроса, под названием: "Запуск итогов в Google Sheets с массивом" .К сожалению, попытка вставить это в редактор скриптов Google Sheets вызывает всплывающее сообщение об ошибке: TypeError: Невозможно прочитать свойство "length" из undefined.(строка 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;
}