Как проверить значение ячейки таблицы с помощью MATCH, не вызывая функцию NOW ()? - PullRequest
0 голосов
/ 30 декабря 2018

Попытка создать таблицу, которая проверяет, был ли уже взят ключ от номера. Ссылка на таблицу 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 Ответ

0 голосов
/ 01 января 2019

Спасибо 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("");    
}
}
...