批量匹配

Power Query 安安羽羽 ⋅ 于 2023-05-26 17:43:27 ⋅ 最后回复由 安安羽羽 2023-05-29 10:41:18 ⋅ 878 阅读

我要从表格1 等到表格2的结果,怎么写公式呢?
file

最佳答案
  • 史努比 PQ 初学者,EXCEL重度患者
    2023-05-27 17:08:19

    file
    如果很明确就是3列,你可以写两次List.TransformMany 去让两列拼接后,再和第三列拼。
    如果考虑通用性,比如你这个列可以是4列、5列……甚至更多,那就可以考虑使用List.Accumulate函数来迭代生成。

    let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    acc添加列序列 = List.Accumulate(List.Skip(Table.ColumnNames(源)),源,(x,y)=>Table.AddColumn(x, "New "&y, each Table.Column(x,y))),
    删除的列 = Table.RemoveColumns(#"acc添加列序列", List.Skip(Table.ColumnNames(源))),
    acc展开列序列 = List.Accumulate(List.Skip(Table.ColumnNames(删除的列)),删除的列,(x,y)=>Table.ExpandListColumn(x, y))

    in

    "acc展开列序列"

    =====================================================================

回复数量: 2
  • 史努比 PQ 初学者,EXCEL重度患者
    2023-05-27 17:08:19

    file
    如果很明确就是3列,你可以写两次List.TransformMany 去让两列拼接后,再和第三列拼。
    如果考虑通用性,比如你这个列可以是4列、5列……甚至更多,那就可以考虑使用List.Accumulate函数来迭代生成。

    let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    acc添加列序列 = List.Accumulate(List.Skip(Table.ColumnNames(源)),源,(x,y)=>Table.AddColumn(x, "New "&y, each Table.Column(x,y))),
    删除的列 = Table.RemoveColumns(#"acc添加列序列", List.Skip(Table.ColumnNames(源))),
    acc展开列序列 = List.Accumulate(List.Skip(Table.ColumnNames(删除的列)),删除的列,(x,y)=>Table.ExpandListColumn(x, y))

    in

    "acc展开列序列"

    =====================================================================

  • 安安羽羽
    2023-05-29 10:41:18

    @史努比 感谢大神!一招搞定

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