Вы можете легко сделать это, используя встроенную функцию проверки данных таблицы (меню Data> Validation). Используя валидацию «Пользовательская формула» и просто введите =B1>A1
(предполагая, что ваши 2 столбца - 1-й 2).
Или сделайте это по сценарию, используя триггер onEdit
, что также легко, но не так сильно, как указано выше.
--edit
Если вы также должны проверить, если ячейка является дата, вы можете использовать следующую формулу в качестве проверки данных:
=AND(DateValue(B1),B1>A1)
Это будет выглядеть следующим образом, используя onEdit
триггер :
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if(s.getName() !== 'Sheet1') return; //check if it's the sheet we want to monitor
var r = s.getActiveRange();
if(r.getColumn() !== 2) return; //check if it's the column we're interested
var v = r.getValue();
if(typeof v !== 'object') {
r.setValue('');
return SpreadsheetApp.getUi().alert('Enter a valid date!');
}
var vA = r.offset(0, -1).getValue();
if(typeof vA === 'object') {
if(vA.getTime() >= v.getTime()) {
r.setValue('');
return SpreadsheetApp.getUi().alert('Enter a date bigger than start date!');
}
} //what to do if there is no date in column A?
}
Обратите внимание, что этот код не проверяет, если дата начала изменяется, и, следовательно, она может быть изменена впоследствии значения больше, чем дата окончания. Но если вы пойдете с этим программным решением, вы сможете взять его здесь.
Спасибо! Не знал, что это так просто! – chopz
Привет, У меня уже есть валидация, которая гарантирует, что дата является действительной датой. не может добавить другое новое правило. Как это можно сделать с помощью onEdit триггера? – chopz
еще раз спасибо! For = B1> A1, как я могу проверить весь столбец вместо одной ячейки? – chopz