Table of contents
本教程介绍了如何使用Excel函数将文本转换为日期和数字转换为日期,以及如何以非公式方式将文本字符串转为日期。 你还将学习如何快速将数字改为日期格式。
由于Excel不是你工作的唯一应用程序,有时你会发现自己正在处理从.csv文件或其他外部来源导入Excel工作表的日期。 当发生这种情况时,有可能日期将作为文本条目导出。 即使它们看起来像日期,Excel也不会不承认它们是这样的。
在Excel中,将文本转换为日期的方法有很多,本教程旨在涵盖所有这些方法,这样你就可以选择一种最适合你的数据格式以及你对公式或非公式方式的偏好的文本-日期转换技术。
如何区分正常的Excel日期和 "文本日期"
当把数据导入Excel时,经常会有一个日期格式的问题。 导入的条目对你来说可能看起来像正常的Excel日期,但它们的行为却不像日期。 Microsoft Excel把这些条目当作文本,这意味着你不能按日期对你的表格进行正确排序,也不能在公式、PivotTables、图表或任何其他能识别日期的Excel工具中使用这些 "文本日期"。
有一些迹象可以帮助你确定一个给定的条目是一个日期还是一个文本值。
日期 | 文本值 |
|
|
如何在Excel中把数字转换为日期
由于所有将文本转换为日期的Excel函数都会返回一个数字作为结果,让我们先仔细看看将数字转换为日期的问题。
你可能知道,Excel将日期和时间存储为序号,只有单元格的格式化才能迫使数字显示为日期。 例如,1900年1月1日存储为数字1,1900年1月2日存储为2,2015年1月1日存储为42005。 关于Excel如何存储日期和时间的更多信息,请参见Excel日期格式。
在Excel中计算日期时,不同的日期函数返回的结果往往是一个代表日期的序号。 例如,如果=TODAY()+7返回一个类似44286的数字,而不是今天之后7天的日期,这并不意味着公式是错误的。 很简单,单元格格式被设置为 一般 或 文本 而它应该是 日期 .
要将这种序列号转换为日期,你所要做的就是改变单元格号格式。 为此,只需选择 日期 在 数字格式 上的方框。 首页 标签。
如果要应用默认以外的格式,那么选择有序列号的单元格,按Ctrl+1键打开 格式化单元格 对话。 在 数量 选项卡,选择 日期 ,选择所需的日期格式,在 类型 并单击 "确定"。
是的,就是这么简单!如果你想要比预定的Excel日期格式更复杂的东西,请看如何在Excel中创建一个自定义的日期格式。
如果一些顽固的数字拒绝改变为日期,请查看Excel日期格式不工作--故障排除技巧。
如何在Excel中把8位数的数字转换成日期
这是很常见的情况,当一个日期被输入为8位数,如10032016,你需要将其转换为Excel可以识别的日期值(10/03/2016)。 在这种情况下,简单地将单元格格式改为Date是不行的--你会得到##########,作为结果。
要将这样的数字转换为日期,你必须使用日期函数与右键、左键和中键函数相结合。 不幸的是,不可能制定一个在所有情况下都适用的通用公式,因为原始数字可以以各种不同的格式输入。 例如:。
数量 | 格式 | 日期 |
10032016 | ddmmyyyy | 2016年3月10日 |
20160310 | yyyymmdd | |
20161003 | yyyyddmm |
无论如何,我将尝试解释将这类数字转换为日期的一般方法,并提供一些公式例子。
对于初学者来说,请记住Excel日期函数参数的顺序。
DATE(年, 月, 日)因此,你需要做的是从原始数字中提取年、月和日期,并将它们作为相应的参数提供给Date函数。
例如,让我们看看如何将数字10032016(存储在A1单元格)转换成日期3/10/2016。
- 摘录 年 这是最后4位数字,所以我们使用RIGHT函数来挑选最后4个字符:RIGHT(A1, 4)。
- 摘录 月 这是第3和第4位数字,所以我们采用MID函数来获取它们MID(A1, 3, 2)。 其中3(第二个参数)是起始数字,2(第三个参数)是要提取的字符数。
- 摘录 日 这是前两位数字,所以我们有LEFT函数来返回前两个字符:LEFT(A2,2)。
最后,将上述成分嵌入到Date函数中,你就得到了一个在Excel中将数字转换成日期的公式。
=date(right(a1,4), mid(a1,3,2), left(a1,2))
下面的截图展示了这一点和另外几个正在运行的公式。
请注意上面截图中的最后一个公式(第6行)。 原始数字-日期(161003)只包含代表年份(16)的2个字符。 因此,为了得到2016年的年份,我们使用以下公式将20和16连接起来:20&LEFT(A6,2)。 如果你不这样做,日期函数将默认返回1916,这有点奇怪,好像微软仍然生活在20世纪 :)
注意:本例中演示的公式只要在以下条件下就能正确工作 所有数字 你想转换为日期,请遵循 同样的模式 .
如何将Excel中的文本转换为日期
当你在Excel文件中发现文本日期时,很可能你想把这些文本字符串转换为正常的Excel日期,这样你就可以在公式中引用它们来进行各种计算。 在Excel中经常是这样,有几种方法来解决这个问题。
Excel DATEVALUE函数--将文本改为日期
ǞǞǞ 价值评估(DATEVALUE 函数在Excel中把一个文本格式的日期转换为Excel认可的序列号,作为一个日期。
Excel的DATEVALUE的语法是非常简单的。
DATEVALUE(date_text) 因此,将一个文本值转换为日期的公式是如此简单 =DATEVALUE(A1)
,其中A1是一个以文本字符串形式存储日期的单元格。
因为Excel的DATEVALUE函数将文本日期转换为序列号,你将不得不通过应用日期格式来使这个数字看起来像一个日期,正如我们刚才讨论的那样。
下面的屏幕截图展示了几个Excel DATEVALUE公式的操作。
Excel DATEVALUE函数--需要记住的事情
当使用DATEVALUE函数将一个文本字符串转换为一个日期时,请记住:。
- 如上文第6行和第8行所示,文本字符串中的时间信息被忽略了。 要转换同时包含日期和时间的文本值,请使用VALUE函数。
- 如果在文本日期中省略了年份,Excel的DATEVALUE将从你的电脑系统时钟中选择当前的年份,如上面第4行所示。
- 由于Microsoft Excel从1900年1月1日开始存储日期,在较早的日期上使用Excel DATEVALUE函数将导致#VALUE!错误。
- DATEVALUE函数不能将数字值转换为日期,也不能处理看起来像数字的文本字符串,为此,你需要使用Excel的VALUE函数,这正是我们接下来要讨论的内容。
Excel VALUE函数--将文本字符串转换为日期
与DATEVALUE相比,Excel的VALUE函数用途更广,它可以将任何看起来像日期或数字的文本字符串转换为数字,你可以轻松地将其改为你所选择的日期格式。
VALUE函数的语法如下。
VALUE(text) 在哪里? 文本
是一个文本字符串或对包含你想转换为数字的文本的单元格的引用。
Excel的VALUE函数可以同时处理 日期和时间 ,后者被转换为小数部分,你可以在下面截图的第6行看到。
将文本转换为日期的数学运算
除了使用特定的Excel函数,如VALUE和DATEVALUE,你可以执行一个简单的数学运算,迫使Excel为你做一个从文本到数字的转换。 所需的条件是,一个运算 不应 更改日期的值 (听起来有点棘手? 下面的例子会让事情变得简单起来!"。
假设你的文本日期在A1单元格中,你可以使用以下任何一个公式,然后将日期格式应用于该单元格。
- 增加。
=A1 + 0
- 乘法。
=A1 * 1
- 司。
=A1 / 1
- 双重否定。
=--A1
正如你在上面的截图中看到的,数学运算可以转换日期(第2行和第4行)、时间(第6行)以及格式为文本的数字(第8行)。 有时,结果甚至会自动显示为日期,你不必为改变单元格格式而烦恼。
如何将带有自定义定界符的文本字符串转换为日期
如果你的文本日期包含一些除正斜杠(/)或破折号(-)之外的分隔符,Excel函数将无法识别它们为日期并返回#VALUE!错误。
为了解决这个问题,你可以运行Excel的 查找和替换 工具将你的分隔符替换成斜线(/),一次性完成。
- 选择所有你想转换为日期的文本字符串。
- 按Ctrl+H打开 查找和替换 对话框。
- 输入你的自定义分隔符(在这个例子中是一个点)。 发现什么 字段,并在 替换为
- 点击 全部替换
现在,DATEVALUE或VALUE函数将文本字符串转换为日期应该没有问题。 以同样的方式,你可以修复包含任何其他分隔符的日期,例如空格或反斜线。
如果你喜欢用公式解决,你可以用Excel的SUBSTITUTE函数来代替 全部替换 来把你的分隔符换成斜线。
假设文本字符串在A列,一个SUBSTITUTE公式可能看起来如下。
=substitute(a1, ".", "/")
其中A1是一个文本日期,". "是你的字符串的分隔符。
现在,让我们把这个SUBSTITUTE函数嵌入VALUE公式中。
=value(substitute(a1, ".", "/"))
并让文本字符串转换为日期,所有这些都是用一个公式。
正如你所看到的,Excel的DATEVALUE和VALUE函数相当强大,但都有其局限性。 例如,如果你试图转换复杂的文本字符串,如 2015年1月1日,星期四。 幸运的是,有一个非公式的解决方案可以处理这个任务,下一节将解释详细步骤。
文本转列向导--以无公式的方式将文本转为日期
如果你是一个非公式用户类型,一个长期存在的Excel功能叫做 文本到列 它可以处理例1中展示的简单文本日期,以及例2中展示的多部分文本字符串。
例1.将简单的文本字符串转换为日期
如果你想转换为日期的文本字符串看起来像以下任何一种。
- 1.1.2015
- 1.2015
- 01 01 2015
- 2015/1/1
你其实不需要公式,也不需要导出或导入任何东西。 只需要5个快速步骤。
在这个例子中,我们将把像2015年1月1日这样的文本字符串(日、月、年用空格分隔)转换为日期。
- 在你的Excel工作表中,选择一列你想转换为日期的文本条目。
- 切换到 数据 标签。 数据工具 组,并点击 文本到列。
在这个例子中,我们要转换格式为 "01 02 2015"(月日年)的文本日期,所以我们选择 MDY 从下拉框中选择。
现在,Excel将你的文本字符串识别为日期,自动转换为你的默认日期格式,并在单元格中以右对齐显示。 你可以通过通常的方式改变日期格式。 格式化单元格 对话。
注:对于 文本到列 为了正确地工作,你的所有文本字符串的格式应该是相同的。 例如,如果你的一些条目的格式是这样的 日/月/年 格式,而其他的则是 月/日/年 你会得到不正确的结果。
例2.将复杂的文本字符串转换为日期
如果你的日期是由多部分的文本字符串表示的,如:。
- 2015年1月1日,星期四
- 2015年1月1日下午3点
你将不得不付出更多的努力,同时使用 文本到列 向导和Excel的DATE功能。
- 选择所有要转换为日期的文本字符串。
- 点击 文本到列 上的按钮。 数据 标签。 数据工具 组。
- 在步骤1中 将文本转换为列的向导 , 选择 划线 并点击 下一页 .
- 在向导的第2步,选择你的文本字符串包含的定界符。
例如,如果你要转换由逗号和空格分隔的字符串,如" 2015年1月1日,星期四" ,你应该选择逗号和空格这两个分隔符。
选择""也是有意义的。 将连续的分隔符视为一个 如果你的数据有多余的空格,可以用""选项来忽略。
最后,请看一下 数据预览 窗口,并验证文本字符串是否被正确拆分到列中,然后点击 下一页 .
- 在向导的第3步,确保数据预览部分的所有列有 一般 如果没有,请点击某一列并选择 一般 根据 列的数据格式 选项。
注意:不要选择 日期 格式的任何一列,因为每一列只包含一个组件,所以Excel将无法理解这是一个日期。
如果你不需要某些列,点击它并选择 不要导入列(跳过)。
如果你不想覆盖原始数据,可以指定插入列的位置--输入左上角单元格中的地址。 目的地 领域。
完成后,点击 完成 按钮。
正如你在上面的截图中所看到的,我们跳过了第一列的星期数,将其他数据分成了3列(在 一般 格式)并从C2单元格开始插入这些列。
下面的截图显示了结果,原始数据在A栏,分割后的数据在C、D和E栏。
- 最后,你必须使用DATE公式将日期部分结合起来。 Excel DATE函数的语法是不言自明的:DATE(年、月、日)
在我们的案例中。
年
是在E列,而日
是在D列,这些没有问题。这不是那么容易的,因为
月
幸运的是,Microsoft Excel提供了一个特殊的MONTH函数,可以将一个月的名字变成一个月的数字。=MONTH(serial_number)
为了让MONTH函数理解它是在处理一个日期,我们把它写成这样。
=MONTH(1&C2)
其中C2包含月份的名称。 一月 在我们的例子中,"1& "被添加到连接一个日期( 1月1日) 以便MONTH函数可以将其转换为相应的月号。
现在,让我们把MONTH函数嵌入到
月
我们的DATE公式的参数。=DATE(F2,MONTH(1& D2),E2)
瞧,我们的复杂文本字符串被成功转换为日期。
使用粘贴特技快速转换文本日期
为了快速将一系列简单的文本字符串转换为日期,你可以使用以下技巧。
- 复制任何空单元格(选择它并按Ctrl + C )。
- 选择有文本值的范围,你要将其转换为日期。
- 右键点击选择,点击 粘贴专用 ,并选择 添加 在 粘贴专用 对话框。
你刚才所做的是告诉Excel为你的文本日期添加一个零(空单元格)。 为了能够做到这一点,Excel将文本字符串转换为数字,由于添加一个零不会改变数值,你得到的正是你想要的--日期的序号。 像往常一样,你通过使用以下方法将数字改为日期格式 格式化单元格 对话。
要了解更多关于特殊粘贴功能的信息,请看如何在Excel中使用特殊粘贴。
修复带有两位数年份的文本日期
现代版本的Microsoft Excel足够聪明,可以发现数据中的一些明显错误,或者更好地说,Excel认为是错误。 当这种情况发生时,你会在单元格的左上角看到一个错误指示器(一个小的绿色三角形),当你选择该单元格时,会出现一个感叹号。
点击感叹号将显示与你的数据有关的几个选项。 如果是2位数的年份,Excel会问你是否要转换为19XX或20XX。
如果你有多个这种类型的条目,你可以一下子把它们都解决掉--选择所有有错误的单元格,然后点击感叹号,选择适当的选项。
如何开启Excel中的错误检查
通常情况下,Excel中的错误检查是默认启用的。 要确定,请点击 文件 > 选择 > 公式 ,向下滚动到 错误检查 部分,并验证是否勾选了以下选项。
- 启用后台错误检查 根据 错误检查 ;
- 包含以2位数表示的年份的单元格 根据 错误检查规则 .
如何在Excel中把文本改为日期的简单方法
正如你所看到的,在Excel中把文本转换为日期远不是一个简单的一键操作。 如果你被所有不同的用例和公式所迷惑,让我告诉你一个快速而直接的方法。
安装我们的终极套件(免费试用版可在此下载),切换到 Ablebits工具 选项卡(2个新的选项卡,包含70多个超棒的工具将被添加到你的Excel!),并找到 文本到日期 按钮。
要将文本日期转换为普通日期,你要做的是这样的。
- 选择有文本字符串的单元格,并点击 文本到日期 按钮。
- 指定 日期顺序 (日、月、年)的选定单元格。
- 选择包括或不包括 时间 在转换的日期中。
- 点击 转换 .
就这样!转换的结果将出现在相邻的列中,你的源数据将被保留下来。 如果出了问题,你可以简单地删除结果,用不同的日期顺序再试一次。
提示:如果你选择了时间以及日期的转换,但在结果中缺少时间单位,请确保应用一个同时显示日期和时间值的数字格式。 更多信息,请参见如何创建自定义日期和时间格式。
如果你想了解更多关于这个奇妙的工具,请查看其主页:Text to Date for Excel。
这就是在Excel中将文本转换为日期,并将日期改为文本的方法。 希望你已经能够找到适合你的技术。 在下一篇文章中,我们将解决相反的任务,并探索将Excel日期转换为文本字符串的不同方法。 感谢你的阅读,希望下周再见。