Excel日期从yyyymmdd转换为mm / dd / yyyy

时间:2012-10-24 19:08:40

标签: excel excel-vba excel-2007 vba

我一直在搜索关于如何在Excel中执行此操作的大约一个小时。

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

我尝试过创建自定义格式,但我不确定我是否做得正确。我找到了几个他们希望以另一种方式mm/dd/yyyy转到yyyymmdd的地方,但他们没有帮助。

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

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

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

5 个答案:

答案 0 :(得分:71)

您可以使用像这样的公式将值转换为日期,在单元格旁边:

=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

只需突出显示要修复的所有单元格并运行代码。

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

答案 1 :(得分:26)

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

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

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

....否则你可以使用

转换为公式

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

并以所需日期格式格式化

答案 2 :(得分:6)

这是一个简单的骨头版本:

假设您在Cell A1中的日期采用您所描述的格式。例如:19760210

然后这个公式会给你你想要的日期:

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

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

答案 3 :(得分:6)

dd/mm/yyyy转换为mm/dd/yyyy

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

答案 4 :(得分:1)

找到了另一个{manual} answer,对我来说很好

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