2016-06-24 36 views
1

我正在导入CSV文件(其中有849999行),并且尝试过滤=tbl.Filter(*table*, "Date", ">"&G11) - 其中G11是日期 - 发生的是它将日期列转换为文本,并不会过滤有没有办法强制它将该列识别为日期?我如何将存储为文本的日期列转换为日期值

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

date convert error

我在想什么?

回答

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") 
+0

谢谢乔恩,这很好! – cfardella