问题描述
我很困惑,花了很长时间试图解决这个问题。我不知道为什么要这么做,也不知道如何解决。我希望有人可以对此提供指导/帮助。
我有一个工作表。在该工作表中,有一个“日期”列和一个公式。公式应匹配到同一日期(或查找日期),但要比日期早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.0833
和C3-(2*60)/1440
和C3-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