我正在尝试准备一份信用卡交易列表,以便在Excel 2010中进行透视和进一步分析(以满足个人需求)。问题是我的银行机构没有遵循标准日期格式,因此有时日期将以Jun. 1, 2013
,有时为May 27, 2013
。第一个不被Excel识别为日期,因此它的Pivot不能 Group (月,季等)。列表中没有其他无法识别的日期。
有没有办法确保列中始终有有效日期?
如果我使用.NET编码,一个选项是ParseExact使用格式字符串MMM. d, yyyy
。
另一个选择是执行If
,将任何字符串转换为类似的日期:
If Not TypeOf MyCell Is DateTime Then _
MyCell.Value = CDate(MyCell.Value.Substring(0,3) &
MyCell.Value.Substring(3))
(这是VB.NETish伪语法,希望它有助于解释我的意图)。它假设一个无效的日期总是一个字符串,里面有一个点,由转换器删除 - 我没关系。
我将如何在Excel中执行此操作?寻找最简单的方法。
答案 0 :(得分:3)
假设您的日期位于A1
,此公式会将其转换为时间序列格式:
=DATEVALUE(SUBSTITUTE(A1,".",""))
然后,您可以将其格式化为您想要的任何格式。
另一个选择是使用此UDF:
Function MorphDate(strDate As String) As Date
Application.Volatile
If VarType(strDate) <> 8 Then Exit Function
Res = Replace(strDate, ".", "")
MorphDate = Res
End Function
像这样使用:=MorphDate(A1)
,并将其格式化为您想要的任何格式。
<强>截图:强>
答案 1 :(得分:2)
快速修复将是全局替换ctl h。更换 。什么都没有
答案 2 :(得分:1)
DateValue仅适用于正确的区域设置,如果我们尝试在具有不同设置的计算机中打开它,则会出现错误。这将始终有效:( G21中的文字日期)
=DATE(RIGHT(G21;4);MATCH(1;1*(LEFT(G21;3)={"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"});0);MID(G21;FIND(",";G21)-2;2))
根据您的区域设置,您可能需要替换字段分隔符“;”通过“,”