![Excel-将天数 hh:mm:ss 转换为分钟(包括负值)](https://linux22.com/image/1330335/Excel-%E5%B0%86%E5%A4%A9%E6%95%B0%20hh%3Amm%3Ass%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%88%86%E9%92%9F%EF%BC%88%E5%8C%85%E6%8B%AC%E8%B4%9F%E5%80%BC%EF%BC%89.png)
给出以下格式的数据(即天数:小时:分钟:秒):
-4 1:0:0.0
我如何在 Excel 中将其转换为分钟?(例如 5820 分钟)
我目前将文本放入列 (days 列; hh:mm:ss 列) 并执行 =([@Days]+[@Hours])*24*60; 但是当天数为负数时 (例如 -5700) 会给出错误的值。
有人有一个优雅的公式吗?
答案1
假设数据中总是有小时数(即使是零),因此有一个空格,尝试用这个公式从 A1 中的原始数据中提取分钟数
=(LEFT(A1,FIND(" ",A1))+MID(A1,FIND(" ",A1)+1,20)*IF(LEFT(A1)="-",-1,1))*1440
您的示例中应该给出 -5820 - 这是预期结果还是您始终想要一个正值?
答案2
将 abs 函数包裹在单元格引用中。例如,如果日期存储在 A1 中,则将 A1 替换为abs(A1)
。这将自动返回不带符号的数字,因此负数将作为正数返回,从而使函数正常工作。
我会帮你做这件事,但我不知道你的电子表格是如何设置的,以及你使用的是什么单元格格式。如果你将电子表格的(相关部分)附加到你的问题中(将其上传到 Dropbox 或 Mediafire 或类似软件),那么我会帮你做这件事。
答案3
(我不明白 Chris 如何使用 @ 来表示列名。对我来说不起作用。在我的解决方案中,每列都是一个命名范围(天和小时),并且裸范围名称出现在公式中。)
这里需要注意的是两个都列包含数字。小时列包含分数;由于它被格式化为时间,因此被解释为 24 小时周期的分数。这必须是真的,否则公式
=(Days+Hours)*24*60
不会做任何有用的事情,即使对于正值也是如此。
现在,我们将始终为正数或负数的值相加。Days 值始终具有正确的符号,但 Hours 值始终为非负数,即使它应该是负数。因此,当 Days 为负数时,我们需要更改 Hours 值:
=(Days+IF(Days>=0,Hours,-Hours))*24*60