将从左到右填充的数据改为从右到左填充
例题描述和简单分析
有Excel文件Book1.xlsx,数据如下所示:
A | B | C | D | E | F | G | H | I | |
1 | 姓名 | 项目1 | 项目2 | 项目3 | 项目4 | 项目5 | 项目6 | 项目7 | 项目8 |
2 | 王1 | 五级 | 2266 | 37级 | 2362 | 109 | 五级 | ||
3 | 王2 | 四级 | 2591 | 38级 | 2471 | 109 | |||
4 | 王3 | 五级 | 2266 | 2253 | 109 | ||||
5 | 王4 | 六级 | 2079 | 33级 | 100 | ||||
6 | 王5 | 六级 | 38级 | 2471 | 109 | ||||
7 | 王6 | 六级 | 2079 | 33级 | 1944 | 100 |
需要将数据全部右移,以每行最后一个数据为准,右移对齐数据,结果如下所示:
A | B | C | D | E | F | G | H | I | |
1 | 姓名 | 项目1 | 项目2 | 项目3 | 项目4 | 项目5 | 项目6 | 项目7 | 项目8 |
2 | 王1 | 五级 | 2266 | 37级 | 2362 | 109 | 五级 | ||
3 | 王2 | 四级 | 2591 | 38级 | 2471 | 109 | |||
4 | 王3 | 五级 | 2266 | 2253 | 109 | ||||
5 | 王4 | 六级 | 2079 | 33级 | 100 | ||||
6 | 王5 | 六级 | 38级 | 2471 | 109 | ||||
7 | 王6 | 六级 | 2079 | 33级 | 1944 | 100 |
解法及简要说明
在集算器中编写脚本p1.dfx,如下所示:
A | |
1 | =file("Book1.xlsx").xlsimport@w() |
2 | =A1.(~.to(1,~.len()-~.rvs().pselect(~)+1).pad@l(null,A1(1).len())) |
3 | =file("result.xlsx").xlsexport@w(A2) |
简要说明:
A1 Excel读成序列的序列
A2 遍历A1,在每个从头到最后一个非空序列前补空值,补到序列与表头序列个数相同为止
A3 结果导出至result.xlsx
http://club.excelhome.net/thread-1587104-1-1.html