PowerQuery从与模式匹配的列表中删除项目



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

我有一个列,其中的单元格包含名称和数字id。我只想留下一张名单。

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

这些数字都是唯一的。因此,如果我有regex,模式将类似于

/^#ddd+$/

我可以使用";"将单元格拆分为列表作为分离器。

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

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

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我如上所述将文本拆分为一个列表。这给了我一列清单。因此,我将列中的列表扩展为新行。我的计划是删除交替的行。但是,删除备用行需要一个结束号。我需要一个论点,直到没有更多的论点需要处理。

有很多方法。一种方法是使用List.Select每隔一个项目进行选择

在您的示例中,这些项目的位置为偶数。

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

编辑2022年11月
另一种方法是:

=List.Alternate(Text.Split([Column1],";#"),1,1,1)

最新更新