55

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

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

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

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

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

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

4

5 回答 5

72

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

=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 为空白,您可以在 c.value 上添加条件以跳过更新。

于 2012-10-24T19:19:54.773 回答
27

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

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

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

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

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

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

于 2012-10-24T19:33:55.183 回答
6

这是一个简单的版本:

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

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

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

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

于 2012-10-24T19:20:32.340 回答
6

转换dd/mm/yyyymm/dd/yyyy

=DATE(RIGHT(a1,4),MID(a1,4,2),LEFT(a1,2))
于 2013-01-31T02:25:48.300 回答
3

找到了另一个对我有用的(手动)答案

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