对同一分类下的数据进行和次序有关的过滤

例题描述和简单分析

有 Excel 文件 stock.xlsx,部分数据如下:

证券代码

交易日期

日开盘价

check

603960

2017-08-17

29.13

2

603960

2017-08-28

29.44

1

603960

2017-08-29

32

3

603960

2020-02-10

32.16

1

603960

2020-02-11

36

3

603963

2017-09-22

18.12

2

603963

2017-09-25

19.93

1

603963

2017-09-26

21.92

1

603963

2017-10-16

45

3

603963

2017-12-25

25

1

603963

2017-12-26

27.68

1

603963

2017-12-27

30.3

3

603963

2018-03-08

25.52

1

现需要对同一证券代码下的数据进行过滤,过滤要求为从第一次 check 列出现 2 至第一次 check 列出现 3 之间的数据,部分结果如下:

证券代码

交易日期

日开盘价

check

603960

2017-08-17

29.13

2

603960

2017-08-28

29.44

1

603960

2017-08-29

32

3

603963

2017-09-22

18.12

2

603963

2017-09-25

19.93

1

603963

2017-09-26

21.92

1

603963

2017-10-16

45

3

解法及简要说明

在集算器中编写脚本 p1.dfx,如下所示:


A

1

=file("stock.xlsx").xlsimport@t()

2

=A1.group(#1).conj(~.m(~.pselect(check==2):~.pselect(check==3)))

3

=file("result.xlsx").xlsexport@t(A2)

简要说明:

A1  读取 stock.xlsx 数据,返回成序表

A2  按证券代码列(#1 代表第一列)分组,每组内取第一个 check 为 2 至第一个 check 为 3 之间的数据,各组结果合并

A3  结果导出至 result.xlsx

问答搜集

http://club.excelhome.net/thread-1572959-1-1.html