在Excel表格的一个单元格中,我有一个日期值,例如:
01/01/2010 14:30:00
我想将日期转换为文本,同时文本的格式必须与日期相同。因此,日期值 01/01/2010 14:30:00
应该显示为 01/01/2010 14:30:00
,但在内部应该是文本。
如何在Excel中实现?
在Excel表格的一个单元格中,我有一个日期值,例如:
01/01/2010 14:30:00
我想将日期转换为文本,同时文本的格式必须与日期相同。因此,日期值 01/01/2010 14:30:00
应该显示为 01/01/2010 14:30:00
,但在内部应该是文本。
如何在Excel中实现?
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")
(24小时制时间)
=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")
(标准时间)
DATEVALUE("01/01/2010")
完成的。 - Zenadixyyyy
更改为 aaaa
并使用 TEXTO
:=TEXTO(B5;"dd/mm/aaaa")
(这可能会帮助其他用户) - DaniSub 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
这里有另一种选择。使用Excel内置的“文本分列”向导。它可以在Excel 2007的“数据”选项卡下找到。
如果您只选择了一列,文件类型和分隔符的默认设置应该可以工作,然后它会提示您更改该列的数据格式。选择文本将强制将其格式化为文本格式,以确保它不被存储为日期。
'01/01/2010 14:30:00
我不清楚这个问题的出版年份,可能已经过时了。因此,我希望我的答案更多地是为未来类似问题提供参考。
我不知道是否已经有人给出了与我即将给出的答案类似的答案,但我认为我的答案最简单、最直接、最有效:如果已经有人给出了答案,我很抱歉,但我没有看到。在这里,我使用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(&)等)将它作为任何普通字符串进行操作。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
由于文本是本地化的,当您尝试在不同的文化中共享文件时,它会出现问题。在瑞典,ÅÅÅÅ-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/
所选答案对我没有用,因为Excel仍然无法将文本转换为日期。这是我的解决方案。
假设在第一列A中,您有类型为2016/03/25 21:20:00
的数据,但存储为文本。然后在B列中写入=DATEVALUE(A1)
,在C列中写入=TIMEVALUE(A1)
。
然后在D列中执行=B1+C1
以添加日期和时间的数字格式。
最后,通过右键单击E列并选择粘贴特殊 -> 粘贴为值
,将D中的值复制到E列中。
突出显示E列中的数字值,并将数据类型更改为日期 - 我喜欢使用YYYY-MM-DD HH:MM:SS
的自定义日期格式。