如何根据起始和结束值生成一个连续的序列?PQ 中有这个套路。那么如果是日期呢?日期能不能也生成序列?
案例:将下图 1 中的两列日期变成连续的日期序列,日期区间内的姓名重复显示,效果如下图 2 所示。
1. 选中数据表的任意单元格 --> 选择任务栏的“数据”-->“来自表格/区域”
2. 在弹出的对话框中保留默认设置 --> 点击“确定”:
表格已经上传至 Power Query。
3. 将公式栏中两列日期的格式从 datetime 修改为 date。
4. 选择任务栏的“添加列”-->“自定义列”
5. 在弹出的对话框中输入以下公式 --> 点击“确定”:
{[起始]..[结束]}
然而结果却出错了,这是因为列表的构造不支持日期序列。
既然知道了原因,那就好办了,把日期转换成数值不就行了吗。
6. 将两列日期格式分别修改为“整数”。
7. 选择任务栏的“添加列”-->“自定义列”
8. 将列名修改为“日期”--> 输入以下公式 --> 点击“确定”:
{[起始]..[结束]}
9. 将“日期”列表“扩展到新行”。
10. 将“日期”列修改为日期格式。
11. 删除“起始”和“结束”列。
12. 将表格上传至指定位置。
右侧绿色的表格就是按时间区间重复后的结果。
如果学会了 M 函数,那么上述第 6 至第 10 步只需简化成一个公式。
1. 添加“自定义列”。
2. 设置标题 --> 在公式区域输入以下公式:
List.Transform(
{Number.From([起始])..Number.From([结束])},
Date.From
)
这段公式的作用就是先将两列日期转换成数值,生成列表,然后再转换回日期格式。
3. 将日期扩展到新行,结果是一样的。