我有一个流程,在通过 R 代码运行 CSV 之前,需要(有时手动)清理 CSV。许多 CSV 来自其他来源,因此我无法控制它们的格式。
我有一列Time Remaining
“分钟:秒”格式,其值为 15:00、14:32 等。Excel 会自动将其读取为时间,因此即使单元格中显示“15:00”,实际值也是“12:15:00 AM”。我确实需要能够将此列解析为单独的“分钟/秒”列,但我无法做到这一点,因为格式都很古怪。
例如,如果 A1 中输入“15:00”,而我在 B1 中写入=left(A1,2)
,结果为“0”。这是因为从技术上讲,A1 的值是“0.010416”(15 分钟是 24 小时的 .25 => .25/24 = .0104166)。
我只想让列的读取和操作与电子表格中显示的完全一致。鉴于我不是电子表格的创建者,我有什么选择吗?
编辑:澄清一下,电子表格的所有者发送它的目的是让它被读成文本“15:00”。Excel 会自动将其转换为时间戳,这使得它很难处理。
修改 2:最好自己尝试一下。转到一个单元格并输入“15:12”,您会看到 Excel 将其更改为下午 3:12:00。在此单元格上使用任何公式都会产生意外结果。有没有办法将单元格转换为单元格本身的内容?我不能直接将其转换为文本格式,因为那样会将其改回小数。
答案1
您可以获取部分时间:
=HOUR(A1)
=MINUTE(A1)
=SECOND(A1)
或者,在使用LEFT
或之前重新格式化为文本:MID
RIGHT
=LEFT(TEXT(A1,"hhmmss"),2)
=MID(TEXT(A1,"hhmmss"),3,2)
=RIGHT(TEXT(A1,"hhmmss"),2)
答案2
答案3
您说您目前正在“清理”输入文件。如果您想访问文件中的值,您应该清理“剩余时间”字段,这样 Excel 就不会将其视为日期/时间。只需更改15:12
为'15:12
或。这在、或 Notepad++="15:12"
中很容易做到 。sed
awk
另一种方法是在导入文件之前将单元格格式化为“文本”。