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
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
9 回答
所选答案对我不起作用,因为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
的自定义日期 .这是另一种选择 . 使用Excel内置的“Text to Columns”向导 . 它位于Excel 2007的“数据”选项卡下 .
如果选择了一列,则文件类型和分隔符的默认值应该有效,然后它会提示您更改列的数据格式 . 选择文本会强制它为文本格式,以确保它不会存储为日期 .
在某些情况下,使用'字符预先将工作,但如果您保存为CSV并再次加载,这是不可能的 .
如果您不使用编程,请执行以下操作(1)选择列(2)右键单击并选择格式单元格(3)选择“自定义”(4)在“类型:”下键入dd / mm / yyyy hh:mm :SS
(24小时)
(标准时间)
我不知道这个问题的发表年份;现在可能已经老了 . 所以,我希望我的回答更多地是在我发布之后对未来类似问题的参考 .
我不知道那里的人是否已经给出了类似于我即将给出的答案,这可能会导致 - 我认为 - 最简单,最直接和最有效:如果有人已经给了它,我道歉,但我还没有看到它 . 在这里,我的答案使用CStr而不是TEXT:
假设单元格A1包含日期,并使用VBA代码:
'转换为字符串A1中包含的值(日期)
strDate = CStr([A1] .Value)
此后,您可以使用字符串函数(MID,LEFT,RIGHT,LEN,CONCATENATE(&)等)将其作为任何普通字符串进行操作 .
这是一个VBA方法:
如果您正在寻找没有编程的解决方案,则应将问题移至SuperUser .
在Excel 2010中,marg's answer仅适用于我在电子表格中导入的某些数据(已导入) . 以下解决方案适用于所有数据 .
无法使TEXT()公式起作用
最简单的解决方案是将粘贴复制到记事本中并返回到Excel,并在粘贴之前将列设置为Text
或者你可以用这样的公式做同样的事情
=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)