=iferror(time()) 检查中的“00”不起作用

=iferror(time()) 检查中的“00”不起作用

我想检查单元格值的格式是否与时间相同,

但这次我不想使用时间类型。

所以我用了以下公式

=IFERROR(TIME(MID(N4,1,2),MID(N4,4,2),0),"false")

这是单元格 N4 的结果:

  • 00:00 -> 假(预期为真)
  • 01:00 -> 正确

如何正确读出00:00?

答案1

您可以使用以下公式确认单元格是否为时间格式:细胞。在您的示例中,如果您想检查单元格中的格式是否A1为时间格式,您可以使用它来返回truefalse

=OR(CELL("format",A1)={"D6","D7","D8","D9"})

该值可能已经是一个时间,并且尝试删除显示的值将不起作用(类似于您尝试$从货币格式的单元格中删除)。

答案2

Excel 可能已自动将您的值的单元格格式设置为时间,而不是文本。在我的测试中,当我输入值时,00:00Excel 立即将单元格类型定义为自定义,格式为“hh:mm”。

您可以通过选择范围/列,右键单击并选择“设置单元格格式...”将单元格的类型转换为文本。

或者你可以将公式修改为:

=IFERROR(TIME(MID(TEXT(A1,"hh:mm"),1,2),MID(TEXT(A1,"hh:mm"),4,2),0),"false")

或者,您可以创建一个新单元格,并在公式中使用它代替 A1,如下所示:

= TEXT(A1,"hh:mm")

答案3

我读到您的问题,N4 中的值没有被格式化为时间显示。此外,虽然这种解读并不排除它是数值的可能性,但更可能的情况似乎是它是一个文本字符串,您想要测试它是否与 Excel 正确显示时间时的外观相匹配,与问题中显示的内容相匹配。

因此,我相信您有“00:00”和“01:00”作为文本字符串。并且您的愿望是检查文本字符串是否与 Excel 写入的逻辑时间格式“hh:mm”相匹配,并且您想要“真/假”输出。

如果是,那您的情况就存在一些问题和潜在问题。这是非常可行的,但不一定像目前设置的那样。

首先,正如其他两个答案所提到的,Excel 可能实际上已经将您的数据更改为不仅仅是数字,而是一个真正的时间值(0 到 1 范围内的小数)。例如,如果手动输入尚未格式化为文本的单元格,则按下“Enter”键时 Excel 会进行转换。如果导入,无论是从文件还是直接粘贴到电子表格中,它都很有可能被转换,而您碰巧以没有转换的方式进行操作的可能性很小。

然后会发生什么?嗯,它确实是数字格式……并且是一个数字。不要以为这就是你想要的,但也许这是可以接受的。如果这是“可以接受的”事情,您可以设置一个,IF首先使用 测试数字ISNUMBER,如果是,您可以使用 测试它的外观/格式。将其CELL作为pgSystemTester测试的 TRUE 分支IF(ISNUMBER(。编写它以测试以“D”作为第一个字符返回的格式。“D9 is, I believe, the code for the "hh:mm" but I could be wrong. If the precise time format is important, enter a value, format it for the "hh:mm" format and see wwhatCELL(“format”,` 返回。

如果不是数字,则假设没有错误,则显示文本。您可以使用 FALSE 分支IF来查看。

那么...怎么做呢?好吧,如果它是文本(我相信您希望如此),您可以在 FALSE 分支中使用以下内容或类似内容作为测试:

TEXT(VALUE(N7),"hh:mm")=N7

这将获取 N4 中的字符串并将其转换为数字。如果可以的话。函数中的“00:00”实际上变为“0” VALUE。函数“Horse”会产生错误。如果确实有一个可以转换为数字的字符串,则它会将其格式化为“hh:mm”格式,但将其保留为文本字符串,并将其与 N4 中已有的(预期为)文本字符串进行比较。请注意,如果 N4 中有一个显示时间的字符串,但格式不同,则会出现不匹配的情况,因此它会检查是否存在该特定格式,而不是检查是否存在任何和所有时间格式。可以说,此时您基本上已经完成了。

IF如果单元格中有数值,则会出现一个真分支;如果单元格中有字符串,则会出现一个假分支。假分支会检查字符串是否按照“hh:mm”格式呈现时间值的方式形成。但是……如果您输入了“horse”,则该分支将失败。您可以根据需要继续使用几种方法:一种是将该部分“包装”在 中,以便“ IFERRORhorse”给出选定的值而不是生成错误,另一种是使用进一步的公式来评估“与该时间格式不匹配”​​的结果。

其次,您的整个方法存在一些非常基本的问题。第一个问题是,Excel 在通过公式计算字符串“00:00”时将其计算为“0”......而不是“00:00”,无论它是实际字符串还是已被 Excel 转换为数字,都会发生这种情况。这意味着函数MID不会执行您要查找的操作。为什么不呢?好吧,第二个函数查看字符 4,并将其和另一个字符作为 分钟参数呈现TIME。只是没有第 4 个字符。只有唯一的“0”字符。这意味着该参数变为"",并且函数失败并生成错误。字符串的其他值确实有效,但仅仅是因为没有其他字符串恰好等于 0。例如,文本字符串“01:00”被计算为 0.04166...(从 0 到 1 的跨度的 1/24),然后MID发现第 4 个字符是“4”,并将“1”与其一起取,因为您从第 4 个字符开始指定了两个字符。这意味着您提供的参数TIME是“0”小时、“41”分钟、“0”秒,它们给出 0 到 1 之间的小数 0.028472......这不是错误,就像“00:00”给出的那样。

因此,如果输入的是文本字符串,那么公式中的一般方法就无法工作。这在某种程度上表明它们可能是数字,但是……如果是这样,这个问题就没有什么意义了。我认为唯一能解决这个问题的原因是,您想到或在帮助站点上找到了这种基本方法,但没有意识到它不能应用于文本字符串。但它不能实现我认为您所描述的功能。

第二,如图所示,该公式将生成一个实时值,而不是真或假。而且绝对不是TRUE/FALSE(前者是文本字符串,后者是 Excel 识别的真布尔值)。您的公式肯定还有更多内容,因为正如所示,它永远不会给出您在问题中显示的结果“真”(或TRUE就此而言)。

第三,上述情况说明了为什么你不想IFERROR在公式中添加任何内容,除非你确切知道它们将如何处理所有可能的输入类型以及公式的每个阶段如何工作。过早添加内容可能会掩盖你正在发生的事情。当然,可以使用它们,但不要将它们添加到公式中,直到一切正常。

上述用于评估真实字符串的公式工作原理的基本描述是,Excel 无论如何都会将各部分转换为数字,因此您可以强制按照自己的方式进行转换,并立即转换回数字,就像 Excel 尝试做的那样。这意味着您可以“免费”获得一个测试,该测试会告诉您字符串是否包含除数字字符和“:”以外的其他内容,并让您精确控制公式该部分的文本输出,以便确保输出符合所需的格式。然后,它将结果字符串与 N4 中的现有字符串进行比较。控制过程到这一点,而不是让 Excel 尽力猜测要做什么,意味着您可以获得所需的比较。如果将此位放在测试中IF,它可以分为好与不好,并让您根据需要处理每个。它还可以允许“真实”TRUE/FALSE输出。

相关内容