King指出,如果一个单元格的格式设置为hh:mm或[h]:mm,而您不小心在该单元格中输入了3:555,则会得到12:15而不是3:55。

Excel将555解释为555分钟,而不是55和1/2分钟。他想知道是否存在防止此类数据输入错误的方法,因为他无法获得数据验证来处理它。

国王是正确的;数据验证不会处理此类错误。如果将数据验证设置为允许“时间”输入到单元格中,然后将范围设置为“上午12:00:00”到“下午11:59:59”(以便允许任何时间),它将仍然接受3:555并产生误解3小时555分钟或12:15。由于12:15在允许的时间范围内,因此数据验证没有问题。

但是,如果将时间输入分为两个单元格,则仍可以使用数据验证。允许用户在一个单元格中输入小时,在另一个单元格中输入分钟,并使用数据验证为每个单元格强制接受输入参数。这将阻止555被接受为有效分钟数。然后,您可以按照以下方式将两个单元格转换为有效时间:

=A1/24+B1/(24*60)

几个订户建议使用宏来检查单元格的内容并停止键入错误。每个建议都依赖于Worksheet_Change事件处理程序,这似乎很有希望。但是,没有提供的解决方案会将3:555的输入视为错误。原因是当Excel将控制权移交给Worksheet_Change事件时,其内部例程已经解析了该条目并将其更改为12:15。虽然可以通过编程方式标记和调整3:555,但解析的12:15不能—仍被认为是有效时间,因此它可以通过任何Worksheet_Change宏正常运行。

因此,唯一基于宏的解决方案是使用输入框供用户输入时间的方法,该时间可以在宏将其插入工作表之前进行验证。但是,与使用单独的分钟和第二个单元格并将数据验证应用于这些单元格相比,这种方法似乎更容易破坏用户输入。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13248)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。