如何将 Excel 数据分组后按次序横向排列

Excel 中有一份股票收益数据:


A

B

1

Date

Stock_Return

2

1995-01-01

-5.20%

3

1995-02-01

2.10%

4

1995-03-01

3.70%

5

1995-04-01

6.90%

6

1995-05-01

6.50%

7

1995-06-01

-5.60%

8

1995-07-01

6.60%

9

1995-08-01

6.20%

计算目标:按指定区间[负无穷,-0.07,-0.05,-0.03,0,0.03,0.05,0.07]Stock_Return 列按段分组,并按Stock_Return逆序横向排列对应的Date。结果写在原 Excel 右侧,应当如下:


D

E

F

G

H

1

-Infinity to -0.07





2

-0.07 to -0.05

1995-06-01

1995-01-01



3

-0.05 to -0.03





4

-0.03 to 0





5

0 to 0.03

1995-02-01




6

0.03 to 0.05

1995-03-01




7

0.05 to 0.07

1995-08-01

1995-05-01

1995-07-01

1995-04-01

按段分组虽然稍有难度,但用Excel 公式还是可以实现的,真正麻烦的是分组后横向按次序排列。

实现步骤:

1.  运行集算器(可以到润乾官网下载,用职场版,首次运行时会提示加载授权,下载个免费的就够了)

2.  Excel 打开要计算的文件,选中 A1:B9 区域,按 ctrl+C 复制到剪贴板。

3.  切换到集算器,选中A1 格,注意要让光标落到 A1 的编辑状态中,用 ctrl+V,将数据粘贴进来。

imagepng

4.  在集算器中继续填写脚本:


A

1

…(复制来的数据)

2

=A1.import@t()

3

=[-0.07,-0.05,-0.03,0,0.03,0.05,0.07]

4

=A2.group@n(A3.pseg(Stock_Return)+1)

5

=A4.(~.sort(Stock_Return).(Date))

6

=A5.concat@n("\t")

脚本函数group 可将数据分组(但不汇总),@n 表示从 1 开始按组号分组。函数 pseg 用于计算某个值所属的区间号,默认从 0 开始。函数 concat 用指定符号将大序列里的小序列合并为字符串,@n 表示字符串之间用回车换行分隔。

5.  F9 执行,点击 A6,在右侧可以看到执行结果,点击"copy data" 按钮,将 A6 的计算结果复制到剪贴板

imagepng

6.  Excel 选中 E1 单元格,用 ctrl+V 粘贴,即可把结果填入 E1:H7。

 

7.  还剩Excel 的 D 列(左表头)未处理,可以手工填,也可以继续写如下集算器脚本,并用同样的方法将 A8 的计算结果复制粘贴到 Excel 的 D 列。


A

7

=-inf()|A3

8

=A7.new(~ / "to  "/ ~[1]).to(A7.len()-1)

至此,所有的步骤已完成。