题目:
把[列4]第3行的数据替换为999,其他数据不变,数据源自拟。
解法:
本身并不是什么难题,单一个Table.ReplaceRows
函数就能做到,但问题是如果列数很多需要把所有的列名都写上,太长了。利用record合并后相同字段会替换前面保留最后一个值的特性,就能简化很多。
let 源 = Excel.CurrentWorkbook(){[Name="表5"]}[Content], 替换 = Table.ReplaceRows(源,2,1,{源{2}&[列4=999]}) in 替换
let
源 = Excel.CurrentWorkbook(){[Name="表5"]}[Content],
替换 = Table.ReplaceRows(源,2,1,{源{2}&[列4=999]})
in
替换
这个没有用record的呀?看不到有什么不同
源{2}得到第3行所有列的record,和后面的[列4=999]合并后,只替换了列4的值,其他值不变。
这样写比较短,不用把所有字段都写出来。
想请教您一下,源{2}代表的是什么意思呢?因为我把{2}当中的数字换成了别的,结果没有任何改变,所以不太明白这里起到的作用是什么。还有就是第三个参数看了官方解释,应该是代表要替换的行数,我的理解是这里输入数字几就会替换掉几行,但是我输入数字2或者3,结果是第二行和第三行的数据被隐藏掉了。所以请教一下前辈?
这个替换公式发现有个bug,是如果原来的单元格是空文本,“”,而不是null,的时候,替换是不生效的;此外如果原来格子里是null也不生效,因为null类型不是text,也会报错。
我现在的处理办法只能是先用“替换值”,把空文本先替换成一个特定的文本串,然后再用这个函数就ok了。
//还没想明白,如果格子里是null怎么办……
还想不出来?
怎么替换空文本
新手这里希望能尽量说的详细点,确实有点想象不出来源{2}&[列4=999]是啥东西。
源{2}就是整個第3行因為從{0}開始算 - 85,29,79,27,73
[列4=999] 就是對應列名叫"列4"的記錄修改, 源{2}的列4對應就是27所以27就變成了999, 但其他的就沿用源{2}本身的記錄 - 85,29等
建議自己到excel裡面玩一下會容易理解很多
感谢作者的教程 , 我把公式中的行号2换成List.PositionOf(表1[列4],27)更方便了.