如何将 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,将数据粘贴进来。
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 的计算结果复制到剪贴板
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) |
至此,所有的步骤已完成。