有些日期在计算时无法通过“查找”识别,但是在手动键入时会被

问题描述

我很困惑,花了很长时间试图解决这个问题。我不知道为什么要这么做,也不知道如何解决。我希望有人可以对此提供指导/帮助。

我有一个工作表。在该工作表中,有一个“日期”列和一个公式。公式应匹配到同一日期(或查找日期),但要比日期早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,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。

因此,我受阻了,希望有人可以对此提供帮助。我先感谢了。

解决方法

听起来您有舍入错误。你尝试过

int main()
{
    cout << "Insert the first one" << std::endl;
        
    std::vector<S> v;
    v.emplace_back();
    v[0].j = {1,2,3};
    
    cout << "Insert a new one" << std::endl;
    
    v.emplace_back();
    v[1].j = {2,3,4};

    std::cout << v[0].j[1] << std::endl;
    std::cout << v[1].j[1] << std::endl;
    return 0;
}

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

您可以尝试类似

Round(calculation,2)

在某些奇怪的情况下仍然可能失败。比较安全的方法是使用Round(calculation,5) ' Round to ~1 second resolution 函数比较字符串,例如

TEXT