手动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中包装拆分命令强制治疗。