Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Power Query Table.FillDown with condition_Excel_Powerbi_Powerquery - Fatal编程技术网

Excel Power Query Table.FillDown with condition

Excel Power Query Table.FillDown with condition,excel,powerbi,powerquery,Excel,Powerbi,Powerquery,有没有办法根据条件填写表格 下面是我的表格样本。我想根据合同栏填写日期栏。例如,如果合同不以GB开头,则填写上一行的日期,否则留空 Contract Date Role 01F001 3/7/2016 A 01F017 5/6/2016 A GB0007 B GB0007 B LBCA09 2/29/2016 A LBCA09 B L

有没有办法根据条件填写表格

下面是我的表格样本。我想根据合同栏填写日期栏。例如,如果合同不以GB开头,则填写上一行的日期,否则留空

 Contract    Date     Role
01F001     3/7/2016     A
01F017     5/6/2016     A
GB0007                  B
GB0007                  B
LBCA09     2/29/2016    A
LBCA09                  B
LBCA09                  B
LBCA09                  B
LBCA12     2/25/2016    A
LBCA12                  B
这是我想要的最终数据

Contract    Date    Role
01F001  3/7/2016    A
01F017  5/6/2016    A
GB0007              B
GB0007              B
LBCA09  2/29/2016   A
LBCA09  2/29/2016   B
LBCA09  2/29/2016   B
LBCA09  2/29/2016   B
LBCA12  2/25/2016   A
LBCA12  2/25/2016   B
我试图在Table.Filldown函数之外添加if语句,但出现语法错误

= if not Text.StartsWith([Contract],"GB") then Table.FillDown(#"Replaced Value",{"Date"})

感谢您的帮助

您可以通过多个步骤完成此操作

  • 填写“日期”栏
  • 添加基于不以“GB”开头的条件列,并从“日期”获取值
  • 删除“日期”列
  • 将“自定义”列重命名为“日期”

您可以使用Table.Partition。对其进行修改会导致更复杂的情况

MyFunc = (_) => if Text.StartsWith(_, "GB") then 1 else 0,
Partitioned = Table.Partition(YourTable, "Contract", 2, each MyFunc(_)),
DownFilled = Table.FillDown(Partitioned{0}, {"Date"}),
Result = Table.Combine({DownFilled, Partitioned{1}})