【问题标题】:Convert long date text to date / time将长日期文本转换为日期/时间
【发布时间】:2014-02-08 00:37:02
【问题描述】:

我收到了一个 Excel (2010) 电子表格,它基本上是一个文本转储。

单元 - J8 具有以下信息 2014 年 2 月 4 日星期二 00:08:06 EST 2014
单元 - L8 具有以下信息 Tue Feb 4 00:14:54 EST 2014

我需要计算 L8 和 J8 之间的时间差。

这些单元格被格式化为“文本”,并且由于它们具有日期、日期、时间和“EST”格式,因此无法使用长日期格式的单元格。

【问题讨论】:

  • 格式总是一样的吗? <3-letter day> <3-letter month> <day> HH:MM:SS EST YYYY?
  • 如果可能的话,我会回到源代码并首先要求更好的格式,而不是使用解析器。
  • 是的 - 格式始终相同。该文本文件是来自“供应商”的数据转储,他们非常不愿意再次运行它。

标签: excel datetime excel-formula excel-2010 vlookup


【解决方案1】:

我这样做是为了解析每个单元格的日期/时间值:

=DATE(RIGHT(J8,4),VLOOKUP(MID(J8,5,3),$P$2:$Q$13,2,FALSE),MID(J8,9,LEN(J8)-26))
+TIME(MID(J8,11+LEN(J8)-27,2),MID(J8,14+LEN(J8)-27,2),MID(J8,17+LEN(J8)-27,2))

然后你可以在两个单元格的值之间做一个简单的减法。

我唯一需要添加到电子表格中的就是一个查找表,用于将月份名称映射到月份值。因此公式中的VLOOKUP

我还需要计算超出日期值的偏移位置,因为它似乎可以有一位或两位数字 - 因此公式中的神奇 2627 数字。

【讨论】:

  • 使用这个得到一个结果“NAME?”
  • @user3285970 - 然后你拼错了。你是从我的回答中复制粘贴过来的吗?
【解决方案2】:

使用数组(MMM 和 1-12 月份的列),当然可以改进,但要让你渡过难关:

=DATE(RIGHT(J8,4),VLOOKUP(MID(J8,5,3),array,2,0),MID(J8,9,2))+VALUE(MID(J8,11,9))  

说 Y8 并复制到 Z8 与 =Z8-Y8 在 AA8 可能适合(暂时!)

不考虑时区差异。

【讨论】:

    【解决方案3】:

    如果L8总是晚于J8,并且格式总是如你所见(时区三个字母,间距如上,那么试试:

    =(MID(L8,5,6)&", "&RIGHT(L8,4) &" "& MID(L8,11,9))-(MID(J8,5,6)&", " &RIGHT(J8,4) &" "& MID(J8,11,9))

    此方法的另一个警告:您的本机默认日期(在 Windows 控制面板中,而不是在 Excel 本身中)需要是 MDY,就像您的文本转储中一样。

    编辑:无论您的原生日期格式是 MDY 还是 DMY,以下(较长的)版本都应该可以工作:

    =(MID(L8,9,2)& MID(L8,4,4)&RIGHT(L8,5)&" "&MID(L8,11,9))-(MID(J8,9,2)& MID(J8,4,4)&RIGHT(J8,5)&" "&MID(J8,11,9))
    

    【讨论】:

    • 感谢您了解这一点。我没有意识到这一年的转换并没有加快。我会改的。
    • 我的日期是 MDY(如示例),所以我猜这是一个语言环境问题。是的,看起来我正在减去字符串,但由于它们“看起来像”日期,Excel 将它们强制转换为日期/时间值。我也有2007。哦,我确实检查了一位数和两位数的日期,而且,至少使用 MDY 可以正常工作。对于单个数字日期,日期后会有一个空格,但 Excel 会在年份之前看到逗号,因此多余的空格会被忽略。
    • 使用 =(MID(L8,5,6)&", "&RIGHT(L8,4) &" "& MID(L8,11,9))-(MID(J8,5, 6)&", "&RIGHT(J8,4) &" "& MID(J8,11,9)) 由于 00:33:54 和 00:37 的时间,我得到了 "0:06": 56 时差为 00:04:02
    猜你喜欢
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多