替换某个单元格的值

题目:


把[列4]第3行的数据替换为999,其他数据不变,数据源自拟。
 

解法:

本身并不是什么难题,单一个Table.ReplaceRows函数就能做到,但问题是如果列数很多需要把所有的列名都写上,太长了。利用record合并后相同字段会替换前面保留最后一个值的特性,就能简化很多。

let
    源 = Excel.CurrentWorkbook(){[Name="表5"]}[Content],
    替换 = Table.ReplaceRows(源,2,1,{源{2}&[列4=999]})
in
    替换

9 Replies to “替换某个单元格的值”

  1. let
    源 = Excel.CurrentWorkbook(){[Name="表5"]}[Content],
    替换 = Table.ReplaceRows(源,2,1,{源{2}&[列4=999]})
    in
    替换

    这个没有用record的呀?看不到有什么不同

    1. 源{2}得到第3行所有列的record,和后面的[列4=999]合并后,只替换了列4的值,其他值不变。
      这样写比较短,不用把所有字段都写出来。

      1. 想请教您一下,源{2}代表的是什么意思呢?因为我把{2}当中的数字换成了别的,结果没有任何改变,所以不太明白这里起到的作用是什么。还有就是第三个参数看了官方解释,应该是代表要替换的行数,我的理解是这里输入数字几就会替换掉几行,但是我输入数字2或者3,结果是第二行和第三行的数据被隐藏掉了。所以请教一下前辈?

  2. 这个替换公式发现有个bug,是如果原来的单元格是空文本,“”,而不是null,的时候,替换是不生效的;此外如果原来格子里是null也不生效,因为null类型不是text,也会报错。

    我现在的处理办法只能是先用“替换值”,把空文本先替换成一个特定的文本串,然后再用这个函数就ok了。
    //还没想明白,如果格子里是null怎么办……

    1. 源{2}就是整個第3行因為從{0}開始算 - 85,29,79,27,73
      [列4=999] 就是對應列名叫"列4"的記錄修改, 源{2}的列4對應就是27所以27就變成了999, 但其他的就沿用源{2}本身的記錄 - 85,29等
      建議自己到excel裡面玩一下會容易理解很多

回复 baigu3 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注