前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

Power Query M函数List.RemoveNulls与List.RemoveMatchingItems

qiguaw 2025-05-02 12:54:58 资源文章 2 ℃ 0 评论

将一组数据删除空值后重新排列:

在Excel中有F5定位空值,然后删除空值,单元格内容上移这样的操做,如果这个工作放到Power Query中应该如何来操作呢?

我们知道有List.RemoveNulls的函数,以及List.RemoveMatchingItems函数,我们就用这两个函数分别做空值删除的操作:

List.RemoveNulls

使用List.RemoveNulls函数的前提是要有null才能被清除,那么就要有一个替换过程,因为从Excel复制过来的数据中没有null只有空白:

第一步:需要一个函数用来做空值替换null的操作:

Table.ToColumns(Table.ReplaceValue(T,"",null,Replacer.ReplaceValue,Table.ColumnNames(T)))

Table.ReplaceValue函数就是这个功能,这个函数需要五个参数:

  1. T:源表
  2. “”:表示源表中的空白
  3. null:是我们要替换后的内容
  4. Replacer.ReplaceValue:替换函数,null要用Value
  5. Table.ColumnNames(T):是列名称的列表,这里我们要全部替换,所以就直接取全部的列名称列表。

第二步:删除null

= List.Transform(TC,(X)=>List.RemoveNulls(X))

在TC替换的基础上,用循环删除null

第三步:还原表格结构

我们在第一步时用的Table.ToColumns函数把表转换成列的列表,这时候再转换回来

= Table.FromColumns(RNULL)

使用Table.FromColumns函数从列的列表转换成表格。

最后合成一个大公式:

= Table.FromColumns(

List.Transform(Table.ToColumns(Table.ReplaceValue(T,"",null,Replacer.ReplaceValue,Table.ColumnNames(T))),(X)=>List.RemoveNulls(X)))

这是使用List.RemoveNulls函数来做的一个公式

List.RemoveMatchingItems

List.RemoveMatchingItems函数就要简单很多了,直接做空值删除,少了一个替换过程

第一步:按列提取列表

= Table.ToColumns(T)

很简单使用Table.ToColumns函数直接提取列表

第二步:删除空值

= List.Transform(TC1,(X)=>List.RemoveMatchingItems(X,{""}))

List.RemoveMatchingItems函数有三个参数,我们这里就用前两个参数就可以了:

  • 第一个参数:源列表
  • 第二个参数:要替换的值的列表

第三步:合成表格

= Table.FromColumns(RBLANK)

最后组合公式:

= Table.FromColumns(

List.Transform(Table.ToColumns(T),(X)=>List.RemoveMatchingItems(X,{""})))

就像在Excel中一样,我们选用不同的函数,同样能够解决同一个问题,主要看我们对问题的理解程度,以及对函数的熟悉程度,但是无论公式长短,最终能够解决问题才是关键,了解更多的函数,解题时的思路也就更开阔一些,更能找到简便的方法。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表