excel - 如何在 Excel 中将文本转换为日期格式

标签 excel date format

我需要按时间顺序对该列进行排序,但是当我导入数据时,一些单元格被识别为自定义格式 (A2-A4),而其他单元格则为通用格式 (A5-11)。 A2-A4 被识别为日期,但 A5-A11 被识别为一般文本。 Excel 没有认识到这些都应该是日期。我尝试将它们格式化为日期,但这不起作用。我已经使用文本到列将时间与数据分开,但是像 A2-A4 这样的单元格在单元格中留下了午夜的时间(例如 2/10/2012 0:00:00),我仍然无法得到当我使用文本到列时,单元格显示为日期。我已经清除了格式,我试过格式刷,我试过 =datevalue。我不确定还能做什么。另外,我注意到 Excel 将值识别为日期的单元格,时间以 24 小时制列出,而其他的则不是。

有人可以帮忙吗?

文本如下所示:

A栏
2 2012 年 2 月 10 日 20:00
3 2012 年 1 月 11 日 3:00
4 2013 年 5 月 12 日 15:30
5 2012 年 10 月 19 日下午 2:00
6 2013 年 4 月 18 日下午 2:00
7 2013 年 10 月 18 日下午 2:30
8 23/12/2013 上午 9:00
9 2013 年 5 月 31 日下午 1:00
10 2013 年 2 月 16 日下午 6:00
11 2013 年 2 月 15 日下午 6:00

最佳答案

我假设,出于某种原因,调整输入数据馈送以使所有日期都遵循 Excel 假定的约定是不切实际的,因为这可能是解决问题的最简单方法。

对于存储为文本的单元格,我假设我们知道正在读取的日期的格式(即 DD/MM/YYYY)并且它将保持不变。对于像 DD/MM/YYYY HH:MM PM 这样的字符串,然后我们可以执行以下操作:

(1) 日期必须存储在第一个斜杠之前的字符中,所以我们可以这样提取:
DAY_FORMULA: =LEFT(A1, FIND("/", A1, 1)-1)
(2) 月份必须存储在第一个和第二个斜杠之间的字符中。它占用一个或两个字符,所以我们可以写如下:
MONTH_FORMULA: =MID(A1, FIND("/", A1, 1) + 1, x)
在这里,FIND("/", A1, 1) + 1告诉 Excel 返回第一个 / 的位置: 因为在那之后月份开始,我们加了一个。现在我们需要找到x ,从该点读取的字符数。自从第一个 /FIND("/", A1, 1)第二个是 FIND("/", A1, FIND("/", A1, 1)+1) ,则两个斜杠之间的字符数由下式给出:
FIND("/", A1, FIND("/", A1, 1)+1) - FIND("/", A1, 1) - 1 .

完整的MONTH_FORMULA可以写成:
MONTH_FORMULA: =MID(A1, FIND("/", A1, 1)+1, FIND("/", A1, FIND("/", A1, 1)+1)-FIND("/", A1, 1)-1)
(3) 年份包含在第二个斜线后面的最后四位数字中,因此我们可以将年份写为:
YEAR_FORMULA: =MID(A1, FIND("/", A1, FIND("/", A1, 1)+1)+1, 4)
然后,您可以使用标准日期公式将它们强制转换为日期格式:
=DATE(YEAR_FORMULA, MONTH_FORMULA, DAY_FORMULA
(4) 如果您想保留有关小时的信息,那么如果字段中不存在前导空格(并不是说这不能用 =TRIM 规避),您可以使用:
TIME_FORMULA: =TIMEVALUE(MID(A1, FIND(" ", A1, 1)+1, LEN(A1)))
然后,您可以将日期添加到时间值以获得完整的日期时间:
=DATE(YEAR_FORMULA, MONTH_FORMULA, DAY_FORMULA) + TIME_FORMULA
如果日期已正确格式化,您不想尝试将字符串格式化为日期,因此您也可以添加 =IF在执行上述任何操作之前声明:
=IF(ISTEXT(A1), ADJUST, A1)
完整的解决方案,替换 ADJUST通过上述步骤,可能看起来像这样:
=IF(ISTEXT(A1), DATE(MID(A1, FIND("/", A1, FIND("/", A1, 1)+1)+1, 4), MID(A1, FIND("/", A1, 1)+1, FIND("/", A1, FIND("/", A1, 1)+1)-FIND("/", A1, 1)-1), LEFT(A1, FIND("/", A1, 1)-1))+TIMEVALUE(MID(A1, FIND(" ", A1, 1)+1, LEN(A1))), A1)

关于excel - 如何在 Excel 中将文本转换为日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21297207/

相关文章:

Excel:当 A 列匹配时计算 B 列中的唯一文本

Python:将数据输出到 Excel 电子表格

java - 将字符串转换为毫秒

java - 获取日期并显示在标签中?我如何将其转换为字符串(日期)

visual-studio-2012 - 如何在 VS2012 中自动格式化代码缩进?

vba - 将项目添加到在运行时添加到用户窗体的 ComboBox

excel - 在 Excel 中突出显示特定列中的负值

php - 选择添加日期后 n 天的日期

javascript - 在jquery中转换日期格式

php - 从数字中获取值(value)