如何将存储为文本的日期列转换为日期值

时间:2016-06-24 10:58:04

标签: excel excel-formula schematiq

我正在使用=tbl.ImportDelimited(file.OpenText(*path*))导入CSV文件(其中包含849999行)并尝试过滤=tbl.Filter(*table*, "Date", ">"&G11) - 其中G11是日期 - 发生的事情是它是将日期列转换为文本并且不会过滤是否有办法强制它将该列识别为日期?

我尝试用=tbl.CalculateColumn(*table*, "Date", DATEVALUE(), "Date")覆盖该列,但收到以下错误:

date convert error

我缺少什么?

1 个答案:

答案 0 :(得分:1)

正如您所说,看起来日期列正在从文件导入为文本,因此使用>进行过滤。不会工作,因为即使看起来像日期,该值实际上也是文本。

要将文本转换为日期,可以使用DATEVALUE()函数,但需要将其作为文本片段传递给tbl.CalculateColumn()。在您的示例中,您实际上正在调用DATEVALUE()并将结果传递给tbl.CalculateColumn()。

您应该会发现以下对公式的更改会将文本值成功转换为日期:

=tbl.CalculateColumn(table, "Date", "DATEVALUE")

"DATEVALUE"作为function参数传递是短格式代码段语法的示例。我也省略了resultColumn参数,因为如果你没有指定它,Schematiq会覆盖输入列的值。以下公式较长,但完全等效:

=tbl.CalculateColumn(table, "Date", "x => DATEVALUE(x)", "Date")

您可以想象,您可以使用许多不同的Excel公式将文本转换为日期。如果你知道你期望的确切格式,那么类似的东西也可以正常工作:

=tbl.CalculateColumn(table, "Date", "x => DATE(RIGHT(x, 4), MID(x, 4, 2), LEFT(x, 2))", "Date")