涉及时间和数字格式的电子表格计算
Spreadsheet calculations involving time and number formats
我有一个包含以下相关数据的电子表格:
| A | B | C |
--|------|------|-----|
1 | Time |Number|Const|
2 |01:00 | 100 | 5 |
3 |01:30 | | |
4 |02:00 | | |
在此设置中,第 2 行中的值是静态的。但是,需要计算 B 列中的其余单元格,通过获取它们的相邻时间值并获得它与 A2 之间的差值。然后需要将分钟的差异乘以 C2 中的常数以获得数字格式值。
马上,执行以下操作在 B3 中不起作用:
=A3 - $A * $C
我想要得到的结果是半小时与分钟的差乘以 5,即 150 应该是 30*5。
我认为这不会那么简单,因为我需要一种方法让 Calc 将时间值转换为可用值。为此,我还尝试了以下公式:
=TIME(,A3-$A,)*$C
=TIME(,A3,)-TIME(,$A,)*$C
第一个给我 502 错误,所以我确定这不是正确的方法。第二个给了我 0 的值,这与没有 TIME
公式的第一个公式的输出方式大致相同。
我也尝试过使用 TIMEVALUE
公式,但使用该公式引用任何时间格式单元格只会给我一个 NAME
错误。
我还可以尝试其他什么方法来做到这一点?
如果您在 A 列中的值被识别为时间,那么对于 LibreOffice 来说很容易。
如果我在单元格中键入 01:00
,它会将其识别为时间,并将其更改为 01:00:00
如果您需要它的格式与 01:00
完全相同,您可以右键单击该单元格并选择合适的格式。在这种情况下,单元格看起来像 01:00
,但如果您单击它,值栏显示 01:00:00
然后您可以使用这些时间值进行数学计算。
所以 =A3-A2
计算为 00:30:00
您几乎可以使用MINUTE()
功能,但不要。 MINUTE()
如果您的所有间隔都小于 1 小时,则可以使用。如果间隔大于一个小时,那么 MINUTE()
只会给出它的分钟部分(所以如果间隔达到 01:30
,那么 MINUTE()
会给你 30
这不是你想要的)。
相反,您实际上使用了存储日期的方式。 LibreOffice 似乎以与 Microsoft 相同的方式存储日期。它是一个浮点数。整数部分是天数,浮点数部分是天数
因此,如果您右键单击具有时间值 00:30
的单元格,然后选择格式/数字/常规,它将呈现 0.208333
。您可以通过将其乘以 1440
将其转换为分钟 - 即 24*60
- 将您一天的分数转换为分钟数,即使间隔大于 1 小时也有效。
所以B3
中的公式变为:
=B2 + ((A3-A2)*1440)*$C
您可以向下复制此公式 - $C
格式意味着它继续引用 C2
单元格。省略 $
使其成为相对的,因此如果您将其复制并粘贴到 B4
,LibreOffice 会将其更改为
=B3+((A4-A3)*1440)*$C
我有一个包含以下相关数据的电子表格:
| A | B | C |
--|------|------|-----|
1 | Time |Number|Const|
2 |01:00 | 100 | 5 |
3 |01:30 | | |
4 |02:00 | | |
在此设置中,第 2 行中的值是静态的。但是,需要计算 B 列中的其余单元格,通过获取它们的相邻时间值并获得它与 A2 之间的差值。然后需要将分钟的差异乘以 C2 中的常数以获得数字格式值。
马上,执行以下操作在 B3 中不起作用:
=A3 - $A * $C
我想要得到的结果是半小时与分钟的差乘以 5,即 150 应该是 30*5。
我认为这不会那么简单,因为我需要一种方法让 Calc 将时间值转换为可用值。为此,我还尝试了以下公式:
=TIME(,A3-$A,)*$C
=TIME(,A3,)-TIME(,$A,)*$C
第一个给我 502 错误,所以我确定这不是正确的方法。第二个给了我 0 的值,这与没有 TIME
公式的第一个公式的输出方式大致相同。
我也尝试过使用 TIMEVALUE
公式,但使用该公式引用任何时间格式单元格只会给我一个 NAME
错误。
我还可以尝试其他什么方法来做到这一点?
如果您在 A 列中的值被识别为时间,那么对于 LibreOffice 来说很容易。
如果我在单元格中键入 01:00
,它会将其识别为时间,并将其更改为 01:00:00
如果您需要它的格式与 01:00
完全相同,您可以右键单击该单元格并选择合适的格式。在这种情况下,单元格看起来像 01:00
,但如果您单击它,值栏显示 01:00:00
然后您可以使用这些时间值进行数学计算。
所以 =A3-A2
计算为 00:30:00
您几乎可以使用MINUTE()
功能,但不要。 MINUTE()
如果您的所有间隔都小于 1 小时,则可以使用。如果间隔大于一个小时,那么 MINUTE()
只会给出它的分钟部分(所以如果间隔达到 01:30
,那么 MINUTE()
会给你 30
这不是你想要的)。
相反,您实际上使用了存储日期的方式。 LibreOffice 似乎以与 Microsoft 相同的方式存储日期。它是一个浮点数。整数部分是天数,浮点数部分是天数
因此,如果您右键单击具有时间值 00:30
的单元格,然后选择格式/数字/常规,它将呈现 0.208333
。您可以通过将其乘以 1440
将其转换为分钟 - 即 24*60
- 将您一天的分数转换为分钟数,即使间隔大于 1 小时也有效。
所以B3
中的公式变为:
=B2 + ((A3-A2)*1440)*$C
您可以向下复制此公式 - $C
格式意味着它继续引用 C2
单元格。省略 $
使其成为相对的,因此如果您将其复制并粘贴到 B4
,LibreOffice 会将其更改为
=B3+((A4-A3)*1440)*$C