我在B细胞中有以下日期 . 实际上这不是日期格式 .
2015-11-01-01.13.34.737000
必须更改为以下格式:
11/01/2015 01:13:34 AM
我对excel公式不太熟悉 . 任何人都可以帮助我带来预期的输出吗?实际上,我尝试使用格式单元格更改日期格式,但没有运气,并尝试了一些excel公式 .
-提前致谢
如果您的原始值在单元格A1中,那么正如所写,这适用:
= MID(A1, 6, 2 ) & "/" & MID(A1, 9, 2) & "/" & LEFT(A1, 4) & " " & SUBSTITUTE(MID(A1, 12, 8), ".", ":") & " AM"
如果您需要公式为12小时时间并附加 AM 或 PM ,那么显然您需要提取输入值的2位数并检查它是否 >= 12 ,附加正确的字符串,并在输出之前更改小时 . 当你've understood what the above is doing, you may begin to see how you could do that. However, since it'有点复杂时,这里:
AM
PM
>= 12
= MID(A1, 6, 2 ) & "/" & MID(A1, 9, 2) & "/" & LEFT(A1, 4) & " " & RIGHT("0" & MOD(MID(A1, 12, 2) - 1, 12) + 1, 2) & ":" & SUBSTITUTE(MID(A1, 15, 5), ".", ":") & IF(NUMBERVALUE( MID(A1, 12, 2) ) < 12, " AM", " PM")
MOD 需要在12小时后回绕,加/减 1 杂技是因为我们写小时从1到12,而不是0到11. right("0" & foo, 2) 位只是确保1位数字被0填充到2位数 . 这似乎有效,但我没有完全彻底地测试它 .
MOD
1
right("0" & foo, 2)
=--SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"-"," ",3),"-","/"),".",":"),":",".",3)
以上将您的原始字符串转换为具有以下格式的字符串:
2015/11/01 01:13:34.737000
然后在开头的双一元将该字符串转换为真实的Excel日期/时间,可以根据需要进行格式化 .
2 回答
如果您的原始值在单元格A1中,那么正如所写,这适用:
= MID(A1, 6, 2 ) & "/" & MID(A1, 9, 2) & "/" & LEFT(A1, 4) & " " & SUBSTITUTE(MID(A1, 12, 8), ".", ":") & " AM"
如果您需要公式为12小时时间并附加
AM
或PM
,那么显然您需要提取输入值的2位数并检查它是否>= 12
,附加正确的字符串,并在输出之前更改小时 . 当你've understood what the above is doing, you may begin to see how you could do that. However, since it'有点复杂时,这里:= MID(A1, 6, 2 ) & "/" & MID(A1, 9, 2) & "/" & LEFT(A1, 4) & " " & RIGHT("0" & MOD(MID(A1, 12, 2) - 1, 12) + 1, 2) & ":" & SUBSTITUTE(MID(A1, 15, 5), ".", ":") & IF(NUMBERVALUE( MID(A1, 12, 2) ) < 12, " AM", " PM")
MOD
需要在12小时后回绕,加/减1
杂技是因为我们写小时从1到12,而不是0到11.right("0" & foo, 2)
位只是确保1位数字被0填充到2位数 . 这似乎有效,但我没有完全彻底地测试它 .以上将您的原始字符串转换为具有以下格式的字符串:
然后在开头的双一元将该字符串转换为真实的Excel日期/时间,可以根据需要进行格式化 .