|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
探讨案例:https://club.excelhome.net/forum ... ;page=1#pid10994623
本案例需求:对满足条件的仓库进行两个字段值的替换,即"库存数量","库存金额"的值随着条件的满足由"可用数量","可用金额"进行替换。
思路:1. 乍一看替换题,Table.ReplaceValue首当前锋,涉及 条件列、替换值列、被替换值列三类数据,该函数四参可用(x,y,z)=>3个形参进行3个字段控制,进而配合if函数做条件判断。
2.实操发现:Table.ReplaceValue(源,each [判断字段],each [替换值字段],(x,y,z)=>if判断步骤,{"被替换值1","被替换值2"});五参控制2个被替换值需要分别对应2个字段取值,而三参引用替换值字段一次只能引用一个,如三参 each {[字段1],[字段2]}进行引用,返回到五参是list容器,还需要进一步去对应取值。
3.分析到这里,可以采取:Table.ReplaceValue(源,each [判断字段],each [替换值字段],(x,y,z)=>if Text.Contains([判断字段],"广州采购中心") then y else x,{"被替换值1"}) 每次替换一个字段,嵌套两次完成;也可以外层List.Transform将五参两个字段作为List列表遍历返回结果。
Puzzle: 有没有什么思路,可以一次将两列值同时替换,实现效果?
进阶:1.本案例要求两列字段进行值替换,涉及判断条件列、两列替换值、两列被替换值,三类数据主键;
2.两列被替换值只是部分数据需要=两列替换值,其余保持不变,即数据进行重组。
3.替换=>重组,本质上原理相通,回想下Table.ReplaceValue单个字段替换,也是通过四参x,y,z的条件判断来决定返回值,then 和else也是进行了数据的重组。
4.顺着这个思路:这3类主键数据,用哪个函数来进行组合呢?
5.函数需求:可以同时控制这5列值,还要能对每个值逐一进行判断返回对应值。是不是感觉某个函数越走越近,有点熟悉的感觉。
6.Table.CombineColumns跃然纸上,将5列值合并成单列list容器内,通过对列表{基数}进行定位取值判断,返回需要的值。
实操:step1:合并
step2:条件判断+数据重组
step3:列表转Table容器
step4:扩展Table容器成列
到这一步,大体已经完成了满足条件2个字段值的替换。
有同学问:这张table的顺序都不是原来的位置,影响美观。
OK,必须安排到位:
step5:列序恢复Table.ReorderColumns
整个案例实操完成。
总结:1.Table.ReplaceValue对同类型值做五参,如多个科目的分数,可以批量同时进行if判断。
2.涉及到不同类型值,只是单纯的取值,Table.RepalceValue连续嵌套可以实现,或者借助List.Accumulate迭代完成。
3.Table.CombineColumns优点:可以将多列置于List列表下进行处理,类似Table.Group的单独分组之意;
可以通过列表的位置引用{基数}来完成获取每一个值,也可以借助List.Transform来遍历(思路瞬间开放)
可以合并列表内数据,按照特定样式进行输出,结合Combiner家族函数,强强联合(1+1>3)
.....论友们不断挖掘,不断创新。
结尾:加入EXCELHOME家族已经5年了,从一个if都不会的小白,到可以帮助论友处理一点能力技能范围内的问题,比较有一定的成就感。
感谢家族无私奉献、乐意分享的每一个大佬,越EXCELHOME越来越强大!加油!
|
评分
-
1
查看全部评分
-
|