在 Excel 中将各种文本条目转换为日期

在 Excel 中将各种文本条目转换为日期

我尝试了 StackExchange 上建议的多种解决方案来将 Excel 中的文本转换为日期,但是对于我拥有的数据,它们都无法可靠地发挥作用,请参阅下面的解释。

我有一列,其中包含“开始日期”。它包含以下形式的日期:

(开始状态) 2019 年 9 月 17 日上午 9:30:59 2020 年 10 月 20 日下午 4:45:59 2020 年 2 月 26 日下午 12:20:59

该图显示了数据和期望的最终状态...

我想将整个条目转换为 Excel 日期值,以便对其进行有用的计算,例如从 2020 年 11 月 21 日的结束时间中减去 2020 年 11 月 20 日的开始时间,因此例如我希望上面的第二个条目最终为(最好)2020 年 2 月 23 日 20:31:59(因为我是英国人),但即使我可以将其转换为美国版本,那也没关系,我可以使用它。

(期望的最终状态) 2019/09/17 09:30 2020/10/20 16:45 2020/02/26 12:20

请不要向我指出其他似乎可以解决这个问题的答案。我试过使用它们。每个答案似乎都存在问题,我不知道如何解决这个问题,否则我就不会发布这个问题了。

例如,如果我尝试=datevalue(left(a1,9)),它就不会获得两位数月份的条目(即 10、11、12)。

如果我尝试=date(mid.... etc,同样的事情:它不能可靠地获取所有信息,因为不同的单元格中的信息长度不同。

我已经使用了文本转列方法,将其拆分为非日期/时间格式的单元格,并将 PM 或 AM 删掉到另一列中,我可以丢弃该列,但这意味着我在一列中得到的不是 20:31:59,而是 08:31:59,在另一列中得到的是 PM,而且我看不出如何让它返回 20:31:59。

如果这个问题有任何不清楚的地方,请询问。

如果我错过了一些非常明显的事情,我深感抱歉,但我已经花了几个小时试图解决这个问题。

答案1

好的,我想我可能有一个合适的解决方案。看来 Excel 将文本转换为日期的方式取决于您的 Windows 区域设置。在 Excel 中设置单元格的日期格式只会改变日期值的显示方式显示,而不是其最初的转换方式。

我的 Windows 区域设置目前设置为南非。我的电子表格解析为南非,其相邻公式为 =A1+0 :

在此处输入图片描述

现在,如果我转到 Windows控制面板> 更改日期、时间或数字格式并暂时将格式更改为英语(美国),然后返回电子表格并重新评估公式(如果没有自动更新,请按 ctrl+alt+F9):

在此处输入图片描述

现在,将新的日期值列复制并粘贴为值。保存文件。将区域设置改回原来的状态。选择列并将您喜欢的日期和时间单元格格式归档到“自定义”下:

在此处输入图片描述

以便:

在此处输入图片描述

答案2

我的第一个尝试是尝试在文本单元格上匹配自定义日期格式。如果成功,单元格中的文本将缩进一个空格,并且您可以输入 =A1+0 来在日期中添加零天而不会引发错误。然后根据您的喜好重新格式化该新单元格。

最糟糕的情况是,您可以将字符串拆分成 excel 可以理解的本地日期格式。您不需要固定长度,但可以使用空格和 / 字符作为分隔符,例如,在两个 / 之间获取日期

=mid(A1,search("/",A1)+1,search("/",A1,search("/",A1)+1)-1-search("/",A1))

从语义上来说

=mid(A1, from first "/" position +1, with length of second "/" position -1 - first "/" position)

加或减一个 +1 或 -1。我现在不在电脑前测试公式。但如果它返回一个字符,例如少一个字符,只需在长度参数上加一个 +1。一旦你分离了日期、月份和年份(如果需要,还有时间),你就可以用日期函数重建日期。

相关内容