我需要按时间顺序对此列进行排序,但是当我导入数据时,某些单元格被识别为自定义格式(A2-A4),而其他单元格则采用通用格式(A5-11)。 A2-A4被确认为日期,但A5-A11被识别为一般文本。 Excel没有意识到这些都应该是日期。我已经尝试将它们格式化为日期,但这不起作用。我已经使用文本到列来将时间与数据分开,但是像A2-A4这样的单元格在单元格中留下午夜的时间(例如2/10/2012 0:00:00),我仍然无法获得将文本用于列时,单元格显示为日期。我已经清除格式,我已经尝试过格式画家,我试过= datevalue。我不知道还能做什么。另外,我注意到Excel中将值识别为日期的单元格,时间列在24小时时间内,而其他时间则没有。
有人可以帮忙吗?
文字如下:
Column A 2 2/10/2012 20:00 3 1/11/2012 3:00 4 5/12/2013 15:30 5 19/10/2012 2:00 pm 6 18/04/2013 2:00 pm 7 18/10/2013 2:30 pm 8 23/12/2013 9:00 am 9 31/05/2013 1:00 pm 10 16/02/2013 6:00 pm 11 15/02/2013 6:00 pm
答案 0 :(得分:4)
我会假设,出于某种原因,调整输入数据Feed以使所有日期都遵循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)
答案 1 :(得分:2)
如何导入数据?
如果您通过双击或通过文件>打开CSV文件打开,然后Excel将解析它,你没有机会看到向导。日期将根据您的区域设置进行解释。如果区域设置的日期格式与CSV文件不匹配,则许多日期都会出错。
相反,打开一个新文件并通过数据>来自文字。导航到CSV文件并将其打开。然后你会得到导入向导。在步骤3中,选择列并将其设置为日期。然后选择文件中显示的日,月和年的顺序。
答案 2 :(得分:0)
正如@Tim所暗示的那样,解决这个问题的最佳方法可能是在源代码中或在其导入中,但是一旦在Excel中,它仍然可以通过复制文本格式化日期并使用Text to Columns和Fixed width解析它们来处理在一年之后立即休息(10
)。在此过程(第3步,共3步)中,您可以选择将左侧列的输出视为日期:MDY。然后将日期和时间一起添加并格式化以适应。