在Excel中的单元格内确保一个有效的date
我正在准备一份信用卡交易清单,以便在Excel 2010中进行透视和进一步分析(针对个人需求)。 问题是我的银行机构没有遵循标准的date格式,所以有时date将在Jun. 1, 2013
,有时甚至是May 27, 2013
。 第一个不被确认为Excel的date,所以它的Pivot不能在该组 (月,季度等)上分组 。 列表中没有其他无法识别的date事件。
有没有办法确保在列中总是有一个有效的date?
如果我在.NET中进行编码,则可以使用一个格式stringMMM. d, yyyy
ParseExact选项MMM. d, yyyy
MMM. d, yyyy
。
另一种select是做一个If
,将任何string转换为如下所示的date:
If Not TypeOf MyCell Is DateTime Then _ MyCell.Value = CDate(MyCell.Value.Substring(0,3) & MyCell.Value.Substring(3))
(这是VB.NET的伪语法,希望能帮助解释我的意图)。 它假定一个无效的date将始终是一个string,里面有一个点,要被转换器删除 – 我很满意。
我如何在Excel中做到这一点? 寻找最简单的方法。
假设你的date是在A1
,这个公式将它转换为时间序列格式:
=DATEVALUE(SUBSTITUTE(A1,".",""))
然后,您可以将其格式化为任何您想要的格式。
另一个select是使用这个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)
,并将其格式化为任何您想要的格式。
截图:
一个快速的解决办法是做一个全球取代ctl h。 更换 。 什么都没有
DateValue只能使用正确的区域设置,如果我们尝试在具有不同设置的计算机中打开,则会出现错误。 这将始终有效:(G21中的文本date)
=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))
根据您的地区设置,您可能需要更换字段分隔符“;” 按“,”