把表中的所有错误自动替换为空?这样做就算列数变了也不怕!
小勤:怎么把表里面的错误都替换成为空值?
大海:Power Query里选中全表,替换错误值啊!
小勤:这个我知道啊。但是这个表的列是动态的,下次多了一列这个方法就不行了,又得重新搞一遍。
大海:那咱们去改这个步骤的公式吧。
小勤:怎么改?
大海:我们先来看一下这个生成的公式:
其中,导致增加或减少列之后不能动态更新的问题主要在于生成了固定列名对应的替换值,如上图红框所示。
小勤:对的,如果这部分内容能变成动态的就好了。
大海:当然可以啊。这其实不就是一个简单的列表吗?
小勤:对的。但是,怎么能够构造出这个列表来?
大海:首先,我们要得到表的所有列的列名,可以用函数Table.ColumnNames,如下图所示:
小勤:嗯,这个函数也简单。但是,怎么再给每个列名多带一个空值呢?
大海:这个方法有很多,比如可以直接用List.Transform去批量把每一个列名转成想要的列表:
小勤:还有其他方法?
大海:当然啊。比如,我们还可以再构造一个列表,里面每一个元素都是空值,列名有多少个值,我们就重复多少个空值,如下所示:
小勤:理解了,就是给一个初始列表,然后按表的列数(Table.ColumnCount)进行重复(List.Repeat)。
大海:对啊。反正要啥就构造啥。
小勤:那怎么把两列组合在一起呢?
大海:还记得List.Zip函数吗?我把它叫“拉链”函数(Zip其实就是拉链的意思)。
小勤:嗯!就是一一对应的把两个列表的数据“拉“在一起!我知道了!几个公式合在一起就搞定了!
大海:其实长公式就是这样一步步“凑”成的,另外,注意你“更改的类型”步骤里的列是固定的哦。
小勤:嗯,这个我知道。后面我再按需要去掉这个步骤或做其他修改就是了。而且,其他生成固定列参数的公式也可能可以参考这种思路去改。
大海:对的。这样做真是就算列数变了也不怕了。