【问题标题】:Excel: Text String to Date ConversionExcel:文本字符串到日期的转换
【发布时间】:2016-04-27 10:56:25
【问题描述】:

我有一个用于将以下文本转换为日期的工作公式。但是,我不明白为什么必须添加尾随 0 才能以 YYYY 格式显示年份。

21.04.2016 转换为 4/21/2016

=(MID(A2,4,2)&"/"&LEFT(A2,2)&"/"&RIGHT(A2,2))+0

它非常简单直接。但是,如果您删除公式末尾的 0,它只会显示 16 而不是 2016。但我可以使用 Right(A2,4) 而不是 Right(A2,2)。但我还是想知道为什么?任何人?谢谢!

【问题讨论】:

  • 想知道您是如何发现添加零会起作用的! ;)
  • 说实话,这段代码不是我写的。我在网上某处看到的。我只是不明白背后的原因。
  • 添加零使 Excel 将字符串转换为数字,正确的格式使 Excel 将数字显示为日期。
  • @Gary'sStudent 你太快了!去当地的咖啡店/甜甜圈店犒劳一下自己吧!
  • @lulumink 仅在某些情况下。

标签: excel date


【解决方案1】:

尾随的零将整个内容转换为数学运算,从而将字符串(+0 左侧的所有内容)视为数字。

你也可以用 *1 代替 +0

=(MID(A2,4,2)&"/"&LEFT(A2,2)&"/"&RIGHT(A2,2))*1

或者您可以删除 +0 并在前面添加 -- 在 ( 之前它应该都这样做。

=--(MID(A2,4,2)&"/"&LEFT(A2,2)&"/"&RIGHT(A2,2))

【讨论】:

  • 现在,很清楚了!非常感谢!如果我们将数学运算符添加到公式中,Excel 会将其视为数字而不是其他任何内容。有道理!
【解决方案2】:

正如 Ed 正确回答的那样,这是因为它将您的日期字符串视为数字。

但是,Excel 必须解释字符串才能得到它的真实数字,而要做到这一点,它依赖于区域设置。 在美国区域设置下,您的公式效果很好,但是当我使用英国区域设置将其插入 Excel 时,我得到 #Value,因为“04/21/16”在英国不是有效的日期或数字。

为了避免这个问题,您应该使用 DATE() 函数将其转换为日期,无论您的区域设置如何。

=DATE(RIGHT(A2,4),MID(A2,4,2),LEFT(A2,2))

【讨论】:

  • 感谢 Phil 提供的替代解决方案!也像魅力一样工作!。
  • 这是更好的答案,避免依赖本地设置来消除日期的歧义
  • 同意这是转换日期的更好方法,并完全支持将其作为答案(阅读赞成票)以将日期从字符串转换为 excel 日期值......但从技术上讲,问题是本质上是“+0 到底在做什么?”但这可能会让人毛骨悚然。
  • 使用DATE()函数的另一个好处是单元格会自动形成合理的格式
  • @ForwardEd 我完全同意这不是真正的问题,但问题的标题是为了澄清这一点而尖叫,我没有评论特权
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多