Как проверить значение ячейки таблицы с помощью MATCH, не вызывая функцию NOW()?
Попытка создать таблицу, которая проверяет, был ли уже взят ключ от номера. Ссылка электронной таблицы Google.
Сотрудник выбирает или вводит значение в ячейку F2. Формула в ячейке G2 =IF(ISERROR(MATCH(F2,C4:C350,0)), "Brīvs", "Paņemts") проверяет, взят ключ или нет. Формула проходит через столбец C и проверяет значение.
При сопоставлении он также вызывает формулу в ячейке B4. Формула в B4: =IF(C4>0, now(), "")
Проблема заключается в том, что каждый раз, когда сотрудник выбирает / вводит значение, функция MATCH запускает функцию now () и переопределяет самое новое время, если оно соответствует критериям поиска.
Есть ли способ проверки значения без вызова функции now (), чтобы время оставалось прежним? Ограничение количества пересчетов в настройках электронных таблиц не помогает, так как сотрудник может неправильно ввести значение с 1-го раза.
Попытка поместить значение в другую ячейку с помощью "=" в соседнюю ячейку и = ячейка (содержимое, координата ячейки), но они ссылаются на исходные значения, и электронная таблица пересчитает все ссылки.
1 ответ
Спасибо cOde за предоставленную подсказку.
Код ниже модифицируется для следующих нужд. Поскольку листы будут впоследствии добавлены, переменная SHEETNAME удалена. Я также добавил опцию isBlank в конце, так что если в ячейке нет значения, отметка времени стирается.
/**
* Creates a Date Stamp if a column is edited.
*/
//CORE VARIABLES
// The column you want to check if something is entered.
var COLUMNTOCHECK = 3;
// Where you want the date time stamp offset from the input location. [row, column]
var DATETIMELOCATION = [0,-1];
function onEdit(e) {
SpreadsheetApp.getActiveSpreadsheet();
var ss= SpreadsheetApp.getActiveSheet();
var selectedCell = ss.getActiveCell();
//checks the column to ensure it is on the one we want to cause the date to appear.
if( selectedCell.getColumn() == COLUMNTOCHECK) {
var dateTimeCell = selectedCell.offset(DATETIMELOCATION[0],DATETIMELOCATION[1]);
dateTimeCell.setValue(new Date());
}
if (selectedCell.isBlank()) {
dateTimeCell.setValue("");
}
}