【问题标题】:Some Dates not recognized with Lookup when Calculated, but will when manually typed计算时查找无法识别某些日期,但手动键入时会识别
【发布时间】:2020-10-20 09:25:08
【问题描述】:

我很困惑,花了很长时间试图弄清楚这一点。我不知道它为什么会这样,也不知道如何解决它。我希望有人可以指导/帮助。

我有一个工作表。在该工作表中,有一个日期列和一个公式。公式是匹配相同的日期(或查找日期),但在日期前 2 小时。然后它在 B 列中返回一个数字。

问题是当我计算日期时它会识别一些日期而不是其他日期。它无法识别的同一日期,如果我手动输入日期(然后将该单元格用作查找的参考,它将起作用。

我在测试中发现的另一件事是,我没有增加 2 小时,而是增加了 2 小时 1 分钟,那么这个特定日期可能会起作用。但是该解决方案不适用于所有不起作用的日期。每一个都需要不同的时间调整(以分钟为单位。也许一个需要 1 个,一个需要 3 个,等等)才能工作。所以这不是解决方案。

我的测试发现:

  • 公式有效。 =XLOOKUP(F7-Time(0,2,0),Sheet2!A3:A100,Sheet2!B3:B100,"N/A") 正如它与某些日期一起使用的证明,但并非全部。
  • 计算的日期实际上在另一个工作表中(我目测验证)。我以数字形式计算的日期是 43983.3。 Sheet2 上数字形式的日期是 43983.3。以数字形式手动输入的日期是 43983.3。该公式适用于手动输入的公式,但不适用于计算的公式。因此,这只是计算日期的问题。
  • 如果日期计算单独在单独的单元格中或在 xlookup 公式中计算,则没有区别。
  • 日期的计算方法没有问题。我有三种不同的计算方法:C3-0.0833C3-(2*60)/1440C3-Time(0,2,0)。所有的结果都与无效的日期相同。
  • 我不认为这是一个四舍五入的问题。我已将日期计算包含在Round(calculation,2) 中。结果相同。而且正如我上面提到的,日期的数字是完全相同的。

这是 Sheet1 的示例:6/1/2020 9:12。这是日期的单元格引用。然后我转到 Sheet2,它看起来像 A 列和 B 列:43983.30 1.1118。 A 列有一个按每分钟排序的日期和值列表,B 列中有一个值。我将取 6/1/2020 9:12 日期,然后减去 2 小时到达 6/1/2020 7:12。在数字形式中,这是从 Sheet1 中的日期计算的 43983.3。然后,我在 Sheet2!A:A 中查找该日期以找到相同的日期,然后返回 B 列。

所以我受到了阻碍,希望有人可以帮助我。我提前感谢它。

【问题讨论】:

  • 可能是小点,但 Time(0,2,0) 是 2 分钟,而不是 2 小时。
  • 谢谢,你的小点很受欢迎。我仔细检查了一遍,你是对的。但我只是测试了一下,并没有改变最终结果。
  • 您的数据示例、期望输出和实际输出将有助于弄清楚发生了什么。

标签: excel date datetime formula


【解决方案1】:

听起来您遇到了舍入错误。你试过了

Round(calculation,2)

但似乎还远远不够。您的时间间隔为 1 分钟,在 Excel 中为 0.00069444...

你可以试试

Round(calculation,5)    ' Round to ~1 second resolution

对于一些奇怪的情况,这仍然可能会失败。更安全的方法是使用 TEXT 函数比较字符串,例如

TEXT(timevalue,"mm-dd-yyyy hh:mm")

【讨论】:

  • 我尝试四舍五入到 5,但没有解决。我也试过 TEXT(timevalue,"mm-dd-yyyy hh:mm"),但这也没有解决。我认为因为 Sheet2!A 是一个数字,而不是文本。
  • 将 F7 和 Sheet2!A 都转换为字符串,然后进行比较。
  • 好的,找到了解决方案。正如Xidgel所说,你必须圆。但是我不明白要做的部分是你必须对查找值和查找数组进行四舍五入。我只是把一侧弄圆。谢谢 Xidgel!
猜你喜欢
  • 2015-10-10
  • 2023-04-09
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多