如何在Power Query中提取数据——列表篇(2)

2020-03-23 16:36:37 浏览数 (1)

(四) 根据条件提取数据

1. 根据条件从列表中进行提取

List.Select(list as list, selection as function) as list

第二个是一个函数公式,返回的是也是一个列表。

例:

List.Select({1}, each _ =1)={1}

注意:返回的是列表格式,而不是值

List.Select({1..10}, each Number.Mod(_,6)<3)={1,2,6,7,8}

List.Select({"a".."z",null,true},each _<>null)={"a".."z",true}

2. 跳过指定数据提取

List.Skip(list as list, optional countOrCondition as any) as any

如果第2参数省略,则默认跳过第一个值;如果第2参数为数值,则跳过指定列表排在前面的值;如果第2参数为条件,则返回满足条件的第一个元素开头,如果第一个条件就不满足,怎不跳过。

例:

List.Skip({1..10})={2..10}

List.Skip({1..10},7)={8,9,10}

List.Skip({1..10}, each _<5)={5..10}

List.Skip({1..10}, each _>5)={1..10}

解释:第1个数据为1,不满足>5,则不跳过

List.Skip({1..10,1}, each _<5)={5..10,1}

解释:第1个不满足的数值是5,所以跳过5之前的数值。

3. 根据区间来提取

List.Range(list as list, offset as number, optional count as nullable number) as list

第2参数为偏移量,为必选项,从0开始;第3参数为偏移后的位数,返回的是list格式。

List.Range({1..10})={1..10}

List.Range({1..10},5)={6..10}

List.Range({1..10},0,1)={1}

List.Range({1..10},3,4)={4..7}

4. 根据包含文本来提取

List.FindText(list as list, text as text) as list

第1参数为列表,第2参数为文本格式,返回的是列表格式。

例:

List.FindText({"a".."z"},"b")={"b"}

List.FindText({"abc","a","ab","ac","bc"},"ab")={"abc","ab"}

List.FindText({"abc","a","ab","ac","bc"},Text.Start("abc",2))={"abc","ab"}

0 人点赞