我一直在搜索关于如何在Excel中执行此操作的大约一个小时。
我有一个从旧系统创建的Excel文件,我从SQL Server数据库中提取信息,我将把信息输回到SQL Server数据库,并希望日期匹配。
我尝试过创建自定义格式,但我不确定我是否做得正确。我找到了几个他们希望以另一种方式mm/dd/yyyy
转到yyyymmdd
的地方,但他们没有帮助。
我不熟悉在任何Microsoft产品中使用VBA,否则我确信这将是一个简单的任务。
我有两个需要更改的单独列。
如何将整个列格式从 (float)
yyyymmdd 格式化为 (Date)
mm / dd / yyyy
答案 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,对我来说很好