如何转换混合格式的畸形日期?

如何转换混合格式的畸形日期?

我正在做一个清理公司数据的项目。一个特别可怕的文件是一份约有 30,000 行的 Excel 表。

此工作表中的日期列填充了多种不同格式的日期,其中许多格式不是有效的 Excel 日期格式。

以下是一些格式:

8/26/2017
20170925
2017-08-10
43026
43040.46597

我需要以某种方式将所有这些都转换为一种没有时间戳的标准格式。

由于格式太多,我尝试检查LEN()以便将格式分组在一起(尽管一些不同的格式也有相同的长度)。

我花了大量的时间尝试多种方法来转换日期,并且可以在新列中获得正确的格式,但由于我需要使用过滤功能,我无法将更正后的格式复制/粘贴回原始列。

仅选择可见的行就可以了,但是在粘贴时,无论我做什么,我仍然会丢失隐藏行中的大量数据。

有什么方法可以解决这个问题,而不必一次浏览所有 30,000 行并复制/粘贴或手动输入正确的日期格式?

答案1

您真正的问题似乎在于能够将更正后的数据从一列移回到原始列。

解决跨过滤行复制/粘贴问题的一种方法是,将包含更正数据的列定位在其左侧原始数据列的旁边。

然后选择正确列上的值范围并按 Ctrl+Shift+右箭头键选择原始列上的相应单元格,然后按 Ctrl+R。

这会将数据从您选择的最左侧单元格复制到您选择的其余单元格,而不会触及不可见行中的数据。

希望这可以帮助!

答案2

dateconv使用来自的外部 Excel 解决方案日期工具

$ dateconv -i %F -i %m/%d/%Y -i %Y%m%d <<EOF
8/26/2017
20170925
2017-08-10
EOF
=>
  2017-08-26
  2017-09-25
  2017-08-10

这个想法是使用多个标志指定所有可能的输入格式-i。默认输出格式是,%F但可以使用 进行更改-f

我不知道如何转换最后两个数字,它不是标准的天数(例如 Matlab 自 0000-01-01 以来的天数或儒略天数或莉莲天数)。

相关内容