Excel日期转换为字符串


125

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

01/01/2010 14:30:00

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

如何在Excel中做到这一点?


6
许多势利的程序员会认为excel并非编程环境,因此可能会解决此问题。我希望他们不会,只是警告您。
Nick Fortescue 2010年

4
Excel可能不是一个成熟的IDE,但是如果您在Excel中获得了数据并且在Excel中需要结果,则某些VBA编程具有各种意义。
brichins 2011年

Answers:


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

(24小时制)

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

(标准时间)


3
充分参考了TEXT函数特别是要知道如何设置格式:见指南日期和时间格式本页office.microsoft.com/en-us/excel-help/...
CODEa所

当我尝试进行此转换时,会显示“ #AD?”。文字,并说有问题。
AloneInTheDark 2014年

1
@AloneInTheDark当您从编解码器中访问链接时,格式有效,但仅当您使用Windows操作系统时才使用英语格式。Mine使用荷兰语格式,这意味着,例如“ DD / MM / YYYY hh:mm:ss”变为“ DD / MM / JJJJ uu:mm:ss”,因为在荷兰语中,“年”是“ jaar”和“小时”是“ uur”,即其他起始字母(而“ day”,“ month”,“ minutes”和“ seconds”以相同的荷兰语和英语字母开头)。基本上,将格式的开头字母转换为操作系统的语言。
Sem Vanmeenen 2014年

3
而相反的转换是通过DATEVALUE("01/01/2010")
Zenadix 2014年

有什么方法可以使用我已经用于日期显示的格式而不必指定它?
palswim

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

如果您正在寻找不进行编程的解决方案,则应将“问题”移至“超级用户”。


6

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

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


4

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

'01/01/2010 14:30:00

4

无法使TEXT()公式起作用

最简单的解决方案是将粘贴复制到记事本中,然后将其列设置为“文本”复制回Excel,然后再粘贴回

或者您可以使用这样的公式进行相同的操作

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


1
赞成,因为据我了解,这是唯一不受语言设置限制的工作方法。如果您打算共享您的工作,则使用TEXT()会给您带来麻烦。即使在一个国家(例如德国)内,您也会发现具有德语和英语配置的人。
V.19博士

1
非常感谢和支持!它对我有用,因为我不能使用= TEXT(Python库公式)
lestat_kim

1

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


0

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

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

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(&)等)将其作为任何普通字符串进行操作


-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列中的数值并将数据类型更改为date-我更喜欢使用表格的自定义日期YYYY-MM-DD HH:MM:SS

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.