批量模糊替换

Power Query Jeremy ⋅ 于 2022-06-16 19:57:36 ⋅ 最后回复由 cnbubble 2024-02-15 13:27:43 ⋅ 1235 阅读

如图,替换"RE"列每个table的Column50-Column54中含有"*月汇总"为"工时汇总"。请问怎么实现?我想到用Table.ReplaceValue,但是怎么写都不对。求救

file

成为第一个点赞的人吧 :bowtie:
回复数量: 3
  • wsl
    2022-08-19 10:13:29

    给个附件,我试试,我之前学习做了一个动态列+多重替换的笔记,应该可以做你这个.

    替换= Table.ReplaceValue(源,"Y",1,(A,B,C)=>if A="Y" then C else if A is null then 0 else 0,List.Skip(Table.ColumnNames(源),3))

    / 1.A,B,C分别为当前值List.Skip(Table.ColumnNames(源),3),旧值"Y",新值,本例中当前值=旧值,通过(A,B,C)=>的方式判定,如果当前值=Y,则返回新值(=1),如果当前值 is null,则返回新值=0;
    2.通过List.Skip+Table.ColumnNames指定需要替换的字段A,做到动态扩展
    /
    我是用List.Skip(Table.ColumnNames(源),3),你可以替换为= List.Alternate(Table.ColumnNames(源), 49, 5)来实现指定50-54列,

  • wsl
    2022-08-19 10:19:51

    想起来了,你可以要加一个遍历

  • cnbubble Excel、VBA、Power Query等
    2024-02-15 13:27:43
    • 1.遍历RE列的内容
    • 2.遍历表中的Column50-Column54列
    • 3.每列遍历单元格,进行查找替换

    单列查找替换功能主要是:替换的值=Table.ReplaceValue(源表,each [Column50],"工时汇总",(x,y,z)=>if Text.Contains(x,"月汇总") then z else y,{"Column50"}),如果源表中某列的单元格包含“月汇总”会替换成“工时汇总”,否则不变。

    函数Table.ReplaceValue的用法为:

    Table.ReplaceValue ( 表 as table,旧值as any,新值as any,替换器 as function,要替换的列as list ) as table

    参考:https://zhuanlan.zhihu.com/p/598366196

    可以在此基础上进行变动【看解释,Table.ReplaceValue可以直接处理多列,应该可以减少一次循环】,由于涉及几个循环嵌套,需要逐步尝试得到正确步骤

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter