应始终着眼于转换的东西,看起来像一个日期为日期。日期将始终保持一个日期,您可以以任何您想要的格式显示它。它甚至可以在从一种语言到另一种语言的过渡中幸存
所以,如果你的来源是一个日期,你很好。如果它是一个字符串,我这样做:
- 使用= DATEVALUE()...如果月份名称在系统语言,这将工作
- 转换源字符串,如果临时更改系统语言是不是一个选项,接下来将是= DATE(yy,mm,dd),其中参数必须使用= LEFT(...),= MID(...),= RIGHT(...)创建
最终你必须月份名称从一种语言转换成另一种像下面的例子:
A1包含JANFEBMAR...
A2包含JÄNFEBMÄR...
换算公式=MID(A2;FIND("MAR";A1);3)
编辑在回答凯尔的评论:
除了这个事实,德国(奥地利)区域会马上认出这串作为一个日期,让我们把问题分成咀嚼片。您的日期字符串在A1
- asumed时间部分很简单:它是一个附加项
TIMEVALUE(RIGHT(A1;8))
分裂我们在动态位置对分隔符打日期。定界符的位置可以通过
2A)=FIND("/";A1;1)
找到...找到第一分隔符
2b)中=FIND("/";A1;4)
...第二分隔符的位置,asuming第一图形可以是仅1或2个字符的和无空格前 - 或者我们必须更换常数“4”的项(2A)+1
2C)=FIND("/";A1;FIND("/";A1;1)+1)
......更安全的版本(2B)
现在我们已经准备好来构建我们留下的东西最中期和右侧的
3A)=LEFT(A1;FIND("/";A1;1)-1)
... 第一数字 ...(2A)-1长度
3B)=MID(A1;FIND("/";A1;1)+1;FIND("/";A1;FIND("/";A1;1)+1)-FIND("/";A1;1)-1)
... 第二数字 ...开始:=(2a)的1,NUM_CHARS =(C) - (2A)-1
3C)=MID(A1;FIND("/";A1;FIND("/";A1;1)+1)+1;4)
... 3图 ...开始:=(2C)+1,NUM_CHARS = 4 - asuming年始终是4位数。更抽象的情况下将是一个(3b)的与(2C)是用于一个=FIND()
第一坯料
如何解释尤其是第一和第二数字(即MM/DD或DD/MM)是可达您。
现在了有趣的部分,即连接所有这些公式为一个怪物来获得日期
4a)的通过输入= DATE(1开始; 2; 3)
4b)的取代通过1(3c)中,由2(3b)中,由3(3A)...不要复制前导 “=”
4C)=DATE(MID(A1;FIND("/";A1;FIND("/";A1;1)+1)+1;4);MID(A1;FIND("/";A1;1)+1;FIND("/";A1;FIND("/";A1;1)+1)-FIND("/";A1;1)-1);LEFT(A1;FIND("/";A1;1)-1))+TIMEVALUE(RIGHT(A1;8))
你看不到时间,只有日期! ....请记住给出一个显示日期和时间的自定义单元格格式,即“DD.MM.YYYY hh:mm:ss”
好的......这个公式是绝对不可读和不可理解的,所以你可能会想要在(临时)字段/列中显示中间结果。
而且这个公式只有在输入字符串或多或少严格格式化时才能使用。它可以处理第一和第二个数字中的一些空白,但从YYYY开始变得棘手。然后,其他概念需要被包括在内,像所有其他人之前=SUBSTITUTE(A1;" ";"")
删除所有空白,等等,等等
提示:我一直在构建复杂的公式是这样的:分离单个细胞的条款,后来他们合并一个大公式
问题是:是从其他地区输入的数据作为“日期”还是字符串? – MikeD
我在猜测它的字符串。数据从Web界面导出,所以我无法确定它是否以字符串或日期导出。由它的外观..它似乎是字符串 – Kyle
进入一个空单元格,并尝试添加1日期。你会得到一个数字结果......这是一个日期......你得到一个#VALUE错误......'不是一个字符串;-)我不是说挑剔......但它决定了你的策略想要使用.... – MikeD