小勤:Power Query里按日期区间生成序列怎么会出错啊?
大海:简单的列表构造方法是不支持生成日期序列的。
小勤:那要怎么办?
大海:其实方法很多,比较常见的一种是可以先将日期转为数字,生成列表后,再转回日期,公式如下:
代码语言:javascript复制= List.Transform(
{Number.From([开始日期])..Number.From([结束日期])},
Date.From
)
如下图所示:
小勤:这几个函数结合倒不复杂,比较复杂一点儿的List.Transform函数你也在文章《PQ-M及函数:批量处理的利器——列表转换函数(List.Transform)及A股数据批量抓取方法》里讲过。那还有其他方法?
大海:对的。还有一个函数是List.Dates可以生成日期列表,但要配合Duration相关的时间区间函数来使用,因为List.Dates需要提供开始日期、天数以及时间间隔,而不是直接的开始时间和结束时间,公式如下:
代码语言:javascript复制= List.Dates(
[开始日期],
Duration.TotalDays([结束日期]-[开始日期]) 1,
#duration(1,0,0,0)
)
如下图所示:
小勤:理解了,实际就是先用开始和结束日期求出时间间隔,然后用Duration.TotalDays得到天数(当然还要加1)交给List.Dates去用。
大海:对的。PQ里的函数虽然多,但通常并不需要太多很难的技巧性运用。