您是否有更简单或更通用的方法来提取/格式化 B 格式的 Excel 单元格。A 列具有随机模式,如 A 列中所示。
A B
16/06/2009 6/16/2009
11/6/2009 6/11/2009
29/10/2009 13:12:51 10/29/2009 13:12:51
3/12/2009 9:38 12/3/2009 9:38
我尝试了这个解决方案,但它不适用于第二种情况。
B = MID($A1,4,2) & "/" & MID($A1,1,2) & "/" & MID($A1,7,4)
另外,在我的情况下,宏是不可能的。我只能使用原生的 Excel 函数。谢谢。
编辑 1:我更新了问题,以涵盖我刚从数据中了解到的新模式。抱歉。
编辑 2:我找到了解决方案,请参阅答案 #2。这有点蛮力,但在所有情况下都有效。
答案1
答案2
今天早上我睡了一觉,喝了几杯咖啡,然后我设法解决了这个问题。它是您输入的内容和我读到的内容的结合。
这些单元格所代表的公式:
E2 = 27/06/2016 08:00:00
F2 = FIND("/",$E2) -> 3 the first /
G2 = FIND("/",$E2,4) -> 6 the second /
H2 = IFERROR(FIND(" ",$E2,4),0) -> 11 any presence of " " space
I2 = NUMBERVALUE(MID($E2,$F2+1,($G2-$F2)-1)) -> 6 month
J2 = NUMBERVALUE(MID($E2,1,$F2-1)) -> 27 day
K2 = NUMBERVALUE(MID($E2,$G2+1,4)) -> 2016 year
L2 = IF(H2=0,"N", "Y") -> Y time present
M2 = IF(H2=0,"00:00:00",RIGHT($E2,LEN($E2)-$H2)) -> 08:00:00 time
N2 = I2 &"/"& J2 &"/"& K2 &" "& M2 -> 6/27/2016 08:00:00 final results
- 我从 Excel 中复制了整列并粘贴到记事本上。
- 格式化日期(例如 E2),删除所有行并格式化为文本。
- 将记事本中的所有行粘贴到 E2 列中。这强制 Excel 将该列解释为文本!他妈的
- 然后我得到了公式,我将它们分解以测试是否所有情况都有效。