当数据列为整数时,如何使用日期相关函数



这是一个从雅虎财经获取股利信息的函数。

=importdata("http://real-chart.finance.yahoo.com/table.csv?s=T&a=1&b=1&c=2010&d="&
month(today())&"&e="&DAY(today())&"&f="&year(today())&"&g=v&ignore=.csv")

这回报…

  A       B
Date    Dividends
42648   0.48
42557   0.48
42466   0.48
42375   0.48
42284   0.47
42193   0.47
42102   0.47
42011   0.47
41920   0.46
41828   0.46
41737   0.46
41647   0.46
41555   0.45
41463   0.45
41372   0.45
41282   0.45
41187   0.44
41096   0.44
41004   0.44
40914   0.44
40821   0.43
40730   0.43
40639   0.43
40549   0.43
40457   0.42
40366   0.42
40275   0.42

我想做的是把每笔交易按年份分组。我找到了一个解决方法来实现这个。

=QUERY( A:B, 
"Select year(A) , sum(B) Where A is not null Group by year(A) Label year(A) 'Year',  
sum(B) 'Total'" , 1)

*结果
Year    Total
2010    70.530003
2011    85.077798
2012    85.877801
2013    99.133401
2014    90.649999
2015    87.259999
2016    104.349998

如果我手动将列A的单元格格式更改为日期格式,虽然这工作得很好,但我想将其变为一个函数。更多类似这样的东西

=query(importdata("http://real-chart.finance.yahoo.com/table.csv?s=T&a=00&b=3&c=2000&d="&
month(today())&"&e="&DAY(today())&"&f="&year(today())&"&g=v&ignore=.csv"),
"Select year(Col1) , sum(Col2) Where Col1 is not null Group by year(Col1) 
Label year(Col1) 'Year',  sum(Col2) 'Total'")

这个函数给我一个错误消息说

不能在非Date或DateTime列

我猜这是因为Col1是整数,而不是日期格式。

有什么方法可以让这个工作吗?

简短回答

使用内置函数TO_DATE将列A数值转换为日期。

公式
=ArrayFormula(query({TO_DATE(A:A),B:B},
"Select year(Col1) , sum(Col2) Where Col1 is not null Group by year(Col1) Label year(Col1) 
'Year',  sum(Col2) 'Total'" , 1))
<标题>

简化情况
  • 下面的公式假设导入的数据位于单元格A2:B28。
  • TO_DATE应用于列A值,然后构建一个数组作为QUERY的第一个参数。
=ArrayFormula(query({TO_DATE(A2:A28),B2:B28},"select year(Col1)"))
<标题>单公式h1> 然这是可能的,但这将需要非常复杂的(难以阅读和难以维护,具有重复嵌套的函数),因此脚本很可能是比单个公式更好的选择。

相关内容

  • 没有找到相关文章

最新更新