如图所示,先筛选出null,在把右边的值填充到筛选后的null里

关注引自免费微信小程序:皆我百晓生
在Power Query(也称为Excel的“数据工具”)中,你可以通过使用“并列”和“合并查询”的方法来实现这个需求。下面是一个详细的步骤指南:
打开你的Excel文件,选择包含数据的表单,然后点击“数据”菜单 -> “从表格/范围选择数据”,接着点击“确定”。
在Power Query编辑器中,你会看到左侧的“表1”。首先,我们需要创建一个副本以便操作。点击“表1”,然后在顶部菜单栏点击“ Home ” -> “新建表” -> “复制表”。
现在有两个表:原表“表1”和新表“表2”。我们将对“表2”进行处理。
在“表2”上右键点击,选择“排序和过滤” -> “自定义排序”,在弹出的窗口中,按照第一列设置升序排序,确保所有的空值都在顶部。然后取消选中所有行,只选择空白单元格,再次右键点击,选择“删除行”。
这样,“表2”中只剩下非空值了。接下来,你需要将这两个表连接起来。回到“表1”,点击顶部菜单栏的“Home” -> “合并查询”。
选择“表2”,然后点击“确定”。
在合并类型选项中,选择“左外连接”,这样可以保留“表1”中的所有行,即使在“表2”中没有匹配项。点击“OK”。
此时,你应该能看到一个新的列,它是基于日期字段的名称加上一个后缀(例如,“Date_y”)。你可以将其重命名为与原始列相同的名称,例如“Date”。
最后,点击“主页” -> “关闭并应用”,将更改应用回Excel工作表。
以下是整个过程的伪代码,因为Power Query主要是图形用户界面操作,而不是编程语言,所以无法提供完整的代码。如果你想要自动化这个过程,可以尝试使用VBA(Visual Basic for Applications),但Power Query本身并不支持编写代码。
// 假设你的数据在名为Sheet1的工作表中,且日期列名为"Date"
// 创建Power Query
let Source = Excel.CurrentWorkbook(){[Name="Sheet1"]}[Content],
// 复制表
Table2 = Table.Copy(Source),
// 对Table2进行排序和删除空行
SortedTable2 = Table.Sort(Table2,{{"Date", Order.Ascending}}),
FilteredTable2 = Table.SelectRows(SortedTable2, each [Date] <> null),
Table2WithoutNulls = Table.Difference(Table2, FilteredTable2),
// 合并查询
MergedTable = Table.NestedJoin(Source, {"Date"}, Table2WithoutNulls, {"Date"}, "Table2WithoutNulls", JoinKind.LeftOuter),
// 重命名合并后的列
RenamedColumns = Table.RenameColumns(MergedTable, {{Table2WithoutNulls[Column1], "Date"}}),
// 关闭并应用更改
Closed = Table.Close(#"Renamed Columns");
Closed
由于你可能不熟悉Power Query的语法,上述伪代码可能看起来有些复杂。不过,按照前面提供的步骤,你可以在Power Query编辑器中直观地完成这项任务,无需了解具体的语法细节。