使用 Power Query 将名称与其他属性分开

问题描述 投票:0回答:1

我有一些数据,试图将玩家名称与一系列有限的基于首字母缩略词的属性分开,这些属性使用 Power Query 添加到玩家名称的末尾。属性的数量因玩家而异。大约有 20 个已知属性,例如 UER、RC、COR,并且全部大写。名字后面的后缀使事情变得更加复杂,例如 Jr.、Sr. 等。以下是数据示例:

数据
鲍勃·布伦利
杰米·莫耶
小卡尔·瑞普肯
肯·卡米尼蒂 UER
肯尼·罗杰斯 RC
劳埃德·麦克伦登错误
劳埃德·麦克伦登 COR,RC

我想要一张像这样的桌子:

姓名 属性
鲍勃·布伦利
杰米·莫耶
小卡尔·瑞普肯
肯·卡米尼蒂 UER
肯尼·罗杰斯 RC
劳埃德·麦克伦登 错误
劳埃德·麦克伦登 错误,错误

我已经尝试了各种列拆分、按示例列等,但无法在不将 Jr.、Sr. 等拉入“属性”列的情况下分离此内容。关于如何使用 Power Query 甚至 Excel 正确执行此操作有什么想法吗?

excel-formula powerquery
1个回答
0
投票

我无法弄清楚如何一步完成,但您可以尝试查找最后一个小写字母(或句点)并将其用作要拆分的索引。

let
  Source = Table.FromRows(
    {
      {"Bob Brenly"},
      {"Jamie Moyer"},
      {"Cal Ripken, Jr."},
      {"Ken Caminiti UER"},
      {"Kenny Rogers RC"},
      {"Lloyd McClendon ERR"},
      {"Lloyd McClendon COR, RC"}
    },
    type table [Data = text]
  ),
  AddSplitIndex = Table.AddColumn(
    Source,
    "SplitIndex",
    each Text.PositionOfAny([Data], {"a" .. "z", "."}, Occurrence.Last),
    Int64.Type
  ),
  AddName = Table.AddColumn(
    AddSplitIndex,
    "Name",
    each Text.Start([Data], [SplitIndex] + 1),
    type text
  ),
  AddAttributes = Table.AddColumn(
    AddName,
    "Attributes",
    each Text.Trim(Text.RemoveRange([Data], 0, [SplitIndex] + 1)),
    type text
  )
in
  AddAttributes

© www.soinside.com 2019 - 2024. All rights reserved.