在你提到的评论中有大约20种不同的格式。这里有三个(两个因为你的样本模糊不清约d与dd)。
Sub fix_urls()
Dim fw As String, rw As String, i As Long, iOldCalc As Long
On Error GoTo Fìn
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
With ActiveSheet.UsedRange.Cells
'replace the days both ways as the sample data was ambiguous
For i = 1 To 31
fw = Format(i, "_00_") 'find what
rw = Format(i, "\,_00_") 'replace with
.Replace What:=fw, Replacement:=rw, LookAt:=xlPart, MatchCase:=False
fw = Format(i, "_0_") 'find what
rw = Format(i, "\,_0_") 'replace with
.Replace What:=fw, Replacement:=rw, LookAt:=xlPart, MatchCase:=False
Next i
For i = 2000 To 2014
fw = Format(i, "_0000") 'find what
rw = Format(i, "\,_0000") 'replace with
.Replace What:=fw, Replacement:=rw, LookAt:=xlPart, MatchCase:=False
Next i
End With
Fìn:
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
仔细计划你的攻击。仔细观察二十多种格式,并确保无法取代另一种格式的误报。通常有一个规定的命令,必须在其中执行替换。
例如,在上面使用,如果_dd_仅为与xlPart
_dd然后_20将凌驾任何_2000三个格式掩码,_2001,_2002等只是要小心并保留一些备份。
只是一个提醒我上面的评论;这些插入逗号,你需要使用一个文本识别符以便在文本字段中间的逗号不断裂的字段的值分为两个区域。 Excel中应该为你做一个简单的Save As ► .CSV
但它看起来到数据行的预设数量,以确定是否要使用在现场带引号的标识符。这预测价值可以通过注册表,但通常是没有必要的。
如果他们都在'_23_Dec_2008'格式设置(与天始终是2位数字)我会说,你可以用Excel做,但如果你有不一致的格式,我认为你需要使用一些其他工具 – AtAFork 2014-11-21 18:28:34
是的,他们不是全部那样。但是如果只有20多种格式,那么我会一次又一次地做。如果是_23_Dec_2008格式(两位数字,文本然后四位数字),那么您如何在Excel中执行此操作? – 2014-11-21 18:46:09
您可能没有考虑过的一件事是,整个值*必须随后用文本标识符(如双引号)包裹,或者字段值将变成两个字段。如果你将它带入Excel,你可以使用VBA来修复它,并用双引号将它导出回.CSV,作为包含每个可能包含逗号的字段的文本标识符。 – Jeeped 2014-11-21 19:26:09