手动replace工作时,Excel VBAreplacebuild立date格式

我从一个自动生成的时间戳转换成一个date格式的Excel格式可以理解通过删除一个“ – ”inbetweendate和时间。

运用

Sub dateFix() Worksheets("INPUT CALC XL BASED").Range("B:B").Replace _ What:="-", Replacement:="", _ SearchOrder:=xlByColumns, MatchCase:=True End Sub 

它会返回大部分date正确的DD / MM / AAA,但有些将被任意改为MM / DD / AAA。

我注意到,最小的数字(10以下)往往是困惑。

input有点像

 18/02/2016 - 12:54 10/02/2016 - 17:11 05/02/2016 - 13:13 01/02/2016 - 08:55 

和它转换一样

 18/02/2016 12:54 (right) 10/02/2016 17:11 (right) 02/05/2016 13:13 (wrong) 02/01/2016 08:55 (wrong) 

奇怪的是,使用Excel中内置的replace,它是正确的。

如果您的input始终采用相同的格式,而且恰好是string,则可以通过编程将其分解,然后明确地将其改为date。

 For i = 1 to WorksheetFunction.CountA(Rows(1)) splitdate = Split(Cells(i,2),"-") Cells(i,2).NumberFormat = "dd/mm/yyyy" Cells(i,2).Value = DateSerial(splitdate(2),splitdate(1),splitdate(0)) Next 

如果它不是一个string(即一些被认为是date,一些是string),你可以在CSTR中包装拆分命令强制治疗。