【问题标题】:PowerQuery remove items from a list matching a patternPowerQuery 从匹配模式的列表中删除项目
【发布时间】:2020-12-31 01:07:29
【问题描述】:

在 Excel 中使用 PowerQuery 如何从列表中删除与模式匹配的项目。

我有一列包含名称和数字 ID 的单元格。我只想留下一个名字列表。

LastName, FirstName;#123;#LastName, FirstName;#321;

这些数字都是唯一的。所以如果我有正则表达式,模式将类似于

/^\#ddd+$/

我可以使用 ';' 将单元格拆分为列表作为分隔符。

= Text.Split([Consultant],";")

如果有办法删除每个第二个项目,直到最后也可以工作。不幸的是,似乎没有办法指定要匹配的模式。

List.RemoveItems({1, 2, 3, 4, 2, 5, 5}, {2, 4, 6})

这太棒了,但是我必须定义所有存在的数字模式。所以这失败了。

List.RemoveMatchingItems(Text.Split([Consultant], ";#"), {1,2,3,4,5,6,7,8,9})

方法2 我将文本拆分为上面的列表。这给了我一列列表。所以我将列中的列表扩展到新行。我的计划是删除备用行。但是,删除备用行需要一个结束编号。我需要一个论点,直到没有更多的论点需要处理。

【问题讨论】:

  • 你的字符串都在一个单元格中吗?有重复的姓、名吗?
  • 一些示例输入和所需输出将使这更容易理解和回答。

标签: excel powerquery m


【解决方案1】:

有很多方法。 一种方法是使用 List.Select 选择所有其他项目

在您的示例中,这些将是具有偶数位置的项目。

let 
  x = Text.Split([Column1],";#"),
  y = List.Select(x, each Number.IsEven(List.PositionOf(x, _)))
in 
 y

【讨论】:

    最近更新 更多