我有2列 'StartDate'和'EndDate'
是否可以进行验证以检查'EndDate'是否早于'StartDate',反之亦然? 我不知道是否要在电子表格本身或通过脚本进行验证。
答案 0 :(得分:0)
您可以使用电子表格内置数据验证功能(菜单数据>验证)轻松完成此操作。使用“自定义公式”验证,只需键入=B1>A1
(假设您的2列是第1列)。
或者使用onEdit
触发器在脚本中执行此操作,这也很简单,但不如上面那么多。
- 修改
如果您还必须检查单元格是否为日期,则可以使用以下公式作为数据验证:
=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?
}
请注意,此代码不会检查开始日期是否已更改,因此可以将其更改为大于结束日期的值。但是如果你使用这个代码解决方案,你应该可以从这里获取它。
答案 1 :(得分:0)
您还可以将日期转换为整数并比较值。 if(int(enddate-startdate< 0,做某事,做别的事)