Excel Date to String转换

时间:2010-04-14 09:12:17

标签: excel excel-formula

在Excel工作表的单元格中,我有一个Date值,如:

01/01/2010 14:30:00

我想将该日期转换为文本,并希望文本看起来与日期完全一样。因此,01/01/2010 14:30:00的日期值应该看起来像01/01/2010 14:30:00,但在内部它应该是文本。

如何在Excel中执行此操作?

10 个答案:

答案 0 :(得分:236)

=TEXT(A1,"DD/MM/YYYY hh:mm:ss")

(24小时制)

=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")

(标准时间)

答案 1 :(得分:8)

以下是VBA方法:

Sub change()
    toText Sheets(1).Range("A1:F20")
End Sub

Sub toText(target As Range)
Dim cell As Range
    For Each cell In target
        cell.Value = cell.Text
        cell.NumberFormat = "@"
    Next cell
End Sub

如果您正在寻找没有编程的解决方案,则应将问题移至SuperUser。

答案 2 :(得分:6)

这是另一种选择。使用Excel内置的“文本到列”向导。它位于Excel 2007的“数据”选项卡下。

如果选择了一列,则文件类型和分隔符的默认值应该有效,然后它会提示您更改列的数据格式。选择文本会强制它为文本格式,以确保它不会存储为日期。

答案 3 :(得分:4)

在某些情况下,预先使用'字符会起作用,但如果您保存为CSV并再次加载,则这是不可能的。

'01/01/2010 14:30:00

答案 4 :(得分:2)

无法使TEXT()公式正常工作

最简单的解决方案是将粘贴复制到记事本并返回到Excel,并在粘贴之前将列设置为Text

或者你也可以用这样的公式做同样的事情

=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)

答案 5 :(得分:1)

如果您不使用编程,请执行以下操作 (1)选择列 (2)右键单击并选择“设置单元格格式” (3)选择" Custom" (4)正好在"类型:"型号dd / mm / yyyy hh:mm:ss

答案 6 :(得分:0)

在Excel 2010中,marg's answer仅适用于我在电子表格中导入的某些数据(已导入)。以下解决方案适用于所有数据。

Sub change()
    toText Selection
End Sub

Sub toText(target As range)
Dim cell As range
Dim txt As String
    For Each cell In target
        txt = cell.text
        cell.NumberFormat = "@"
        cell.Value2 = txt
    Next cell
End Sub

答案 7 :(得分:0)

我不知道问题的发表年份;现在可能已经老了。因此,我希望在我的帖子之后,我的回答更多地是对未来类似问题的参考。

我不知道那里的人是否已经给出了类似于我即将给出的答案,这可能会导致 - 我认为 - 是最简单,最直接和最有效的:如果有人已经给了它,我道歉,但我还没有看到它。在这里,我的答案使用CStr而不是TEXT:

假设单元格A1包含日期,并使用VBA代码:

Dim strDate As String

'Convert to string the value contained in A1 (a date)
strDate = CStr([A1].Value)

此后,您可以使用字符串函数(MID,LEFT,RIGHT,LEN,CONCATENATE(&)等)将其作为任何普通字符串进行操作。

答案 8 :(得分:0)

由于文本已本地化,因此当您尝试通过不同文化共享文件时,它会中断。 ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ 艾艾 MM-DD-MM-DD 在瑞典可能会完美运行,但在美国、德国或以色列它会变得糟糕透顶。 合理的解决方案是到处都接受英语,但事实并非如此。

基本上不要使用文本来格式化日期。 以下是如何以 ISO 格式创建日期。 TEXT 用于确保领先

=YEAR(A1)&"-"&TEXT(MONTH(A1);"00")&"-"&TEXT(DAY(A1);"00")

如果您想要向后、横向或其他方向,只需更改它即可。 https://www.reddit.com/r/ISO8601/comments/enhlp6/logic_of_the_different_date_time_systems_with/

答案 9 :(得分:-1)

所选答案对我不起作用,因为Excel仍未将文本转换为日期。这是我的解决方案。

假设在第一列A中,您拥有类型2016/03/25 21:20:00的数据,但存储为文本。然后在B列中写=DATEVALUE(A1),在C列写=TIMEVALUE(A1)

然后在D栏中=B1+C1添加日期和时间的数字格式。

最后,右键单击E列,将D中的值复制到E列,然后选择Paste Special -> Paste as Values

突出显示E列中的数值并将数据类型更改为日期 - 我更喜欢使用YYYY-MM-DD HH:MM:SS形式的自定义日期。