Как проверить значение ячейки таблицы с помощью 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("");    
}
}
Другие вопросы по тегам