【问题标题】:Excel Date Conversion from yyyymmdd to mm/dd/yyyyExcel 日期从 yyyymmdd 转换为 mm/dd/yyyy
【发布时间】:2012-10-14 21:31:08
【问题描述】:

我已经搜索了大约一个小时来了解如何在 Excel 中执行此操作。

我有一个从旧系统创建的 Excel 文件,我正在从 SQL Server 数据库中提取信息,我会将信息输入回 SQL Server 数据库并希望日期匹配。

我尝试过创建自定义格式,但我不确定我是否正确地做到了。我找到了几个他们想从mm/dd/yyyyyyyymmdd 的地方,但他们没有提供帮助。

我不熟悉在任何 Microsoft 产品中使用 VBA,否则我确信这将是一个简单的任务。

我有两个单独的列需要更改。

如何将整个列从 (float)yyyymmdd 格式化为 (Date)mm/dd/yyyy

【问题讨论】:

  • 右键单击该行,然后单击“设置单元格格式”。在数字选项卡下,单击自定义。在那里您可以将其设置为mm/dd/yyyy
  • 我试过了,它所做的只是插入#################....
  • 好的,在这种情况下,我需要查看您的 Excel 文件。您可以在 www.wikisend.com 中上传几行示例数据并在此处分享链接吗?
  • @SiddharthRout 当玛拉基试图将数字显示为日期时,Excel 会尝试将其设为日期......根据所提供的数字,这可能是 50-60000 年后的事情。我认为这太过分了。
  • 顺便说一句,显然可以在单元格中显示为日期的最大日期(Excel 2010)是 2958465,即 12/31/9999

标签: excel excel-2007 vba


【解决方案1】:

您可以在单元格旁边使用如下公式将值转换为日期:

=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))

其中 A1 是您需要转换的字段。

或者,您可以在 VBA 中使用此代码:

Sub ConvertYYYYMMDDToDate()
   Dim c As Range
   For Each c In Selection.Cells
       c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
       'Following line added only to enforce the format.
       c.NumberFormat = "mm/dd/yyyy"
   Next
End Sub

只需突出显示您想要修复的任何单元格并运行代码。

请注意,正如 cmets 中提到的 RJohnson,如果您选择的单元格之一为空,则此代码将出错。如果 c.value 为空,您可以在 c.value 上添加条件以跳过更新。

【讨论】:

  • 甜蜜!这是迄今为止 YYYYMMDDHHMMSS 的一个:=DATE(LEFT(B1,4),MID(B1,5,2),MID(B1,7,2))
  • 您介意将 YYYYMMDD 运行到 DD/MM/YYYY 吗?
  • @Gaia 为此,您需要将数字格式更新为“dd/mm/yyyy”。 IE。 c.NumberFormat = "dd/mm/yyyy"
  • @盖亚。有点。只有两种方法可以使日期显示不同。您必须手动更改单元格的格式(这是代码选项所做的),或者更新操作系统中的默认日期格式。
  • @RJohnson 确实如此,我添加了一个关于空单元格的注释。
【解决方案2】:

这是一个简单的版本:

假设您在单元格 A1 中有您描述的格式的日期。例如:19760210

那么这个公式会给你你想要的日期:

=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)).

在我的系统 (Excel 2010) 上,它适用于字符串或浮点数。

【讨论】:

    【解决方案3】:

    您是否有您所说的数据行(水平)或列(垂直)?

    如果是后者,您可以使用“文本到列”功能“原位”转换整列 - 这样做:

    选择列>数据>文本到列>下一步>下一步>从下拉列表中选择“列数据格式”下的“日期”和“YMD”>完成

    ....否则您可以使用公式转换

    =TEXT(A1,"0000-00-00")+0

    并以所需的日期格式格式化

    【讨论】:

    • 你的答案也是正确的!我实际上是在寻找 @Leo 和 @DanielCook 回答的内容。但Text to columns 是我遇到的问题的最佳解决方案。可能不如编写一个公式并将其复制粘贴到其他单元格或运行宏快。但一个很好的解决方案!我希望每个人也都支持这个答案!
    • 这似乎是实际的答案,因为我们在这里不需要任何公式,整个列都可以用它来转换。感谢您提供此答案
    • @sunil 我记得我实际上尝试过这个,它错误地更改了列中的数据,这就是我没有这样做的原因。我接受了实际上为我的问题提供了解决方案的答案,请给予该答案应得的支持。
    • 这个答案其实是错的,我想fromYYYYMMDD转成Excel能识别的日期格式。不是相反。
    • TEXT 函数将简单地将 20180130 等数据转换为文本值 2018-01-30。如果你想要一个真实的日期,那么 +0 将进行转换,这样你就可以按照你想要的任何方式格式化日期。任何不改变值的操作都会起作用,例如 *1
    【解决方案4】:

    用于将dd/mm/yyyy 转换为mm/dd/yyyy

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

    【讨论】:

    • 这不是我想要的,但我知道它对其他人有什么用处,所以我投了赞成票!
    【解决方案5】:

    找到另一个(手动)answer 对我很有效

    1. 选择列。
    2. 选择数据选项卡
    3. 文本到列 - 打开新框
    4. (选择分隔),下一步
    5. (取消选中所有框,使用“none”作为文本限定符),下一步
    6. 使用日期下拉菜单中的 ymd 选项。
    7. 点击完成

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 2011-10-15
      相关资源
      最近更新 更多