(四) 根据条件提取数据
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"}