2017-06-28 34 views
0

我不是新来的Excel和/或Access,但从来没有遇到过这种情况。一份报告发送给我,日期字段以文本形式存储,但以美国东部时间2017年6月6日上午9点24分输出。我试图将此列转换为日期字段,以便我可以在Access中进行计算。我很乐意在Access中这样做,但我认为在Excel中做起来可能更容易。我试着做一个文本列,然后格式化为日期,即3/14/2001,但无济于事。我想过要做左手,但日期可能是2017年6月2日或12/2/2017。任何帮助将不胜感激。在Excel中将文本中的日期转换为日期字段,即2017/6/2 9:24 EDT

+0

欢迎StackOverflow的,请花一点时间来审查游:https://stackoverflow.com/tour, 如何创建一个最小,完整和可验证的示例:https://stackoverflow.com/help/mcve,更具体地说, *如何提出好问题* https://stackoverflow.com/help/how-to-ask - 如果您在寻求帮助之前对问题进行了一些思考,并通过在代码*中包含特定问题并尝试解决问题,您将获得更好的反馈和有用的答案。 – mjw

回答

1

使用:如你所愿

=--LEFT(A1,LEN(A1)-3) 

然后格式的单元格。

enter image description here

注意,这仅适用于如果您当地的日期格式d/m/ym/d/y,如果这是你需要通过位解析数据位的情况。

0

您可以使用替代。就像这样:

=SUBSTITUTE(A1;"EDT";"") 
+0

1.不替换,应该是SUBSTITUTE。 2您仍然需要将其设为数字​​,因为SUBSTITUTE将返回一个文本字符串。所以要么将它包装在'VALUE()'或'DATEVALUE'中,要么将它乘以'--'。这会将文本转换为实际日期。但好主意。 –

+0

好点。我的excel其实是葡萄牙语,我错误地翻译了这个功能。正确的是SUBSTITUE。如果您将公式设置为日期字段的字段,您可能不需要将日期值转换为数字进行比较,但他应该记住,也许这是必需的。 –

+0

即使您将其设置为日期/时间,也不会自动转换,因为Excel不会自动转换公式返回的字符串。你可以将单元格作为日期时间并输入'blah','blah'将保留。一样。 Excel会将其视为文本并且不会转换为真正的日期。它看起来像一个日期,但在查找时它会失败,因为与真实日期相比,Excel会查找一个数字。 –

0

如果您将其保存为CSV或做任何复制/粘贴,并要确保Excel不将其转换成在重新导入一个日期类型,你可以在值前加一个撇号它告诉Excel明确忽略它后面的内容。这是一种使用宏自动执行的方法。

格式列/行作为文本和它添加到宏工作簿:

Private Sub Worksheet_Change(ByVal Target As Range) 

    With Target 
     If IsDate(.Value) Then 
      Application.EnableEvents = False 
      .Value = "'" & .Value 
      Application.EnableEvents = True 
     End If 
    End With 

End Sub 
相关问题