如何将格值移动位置并删除空行

例题描述和简单分析

有 Excel 文件 book1.xlsx,数据如下所示:

如果 A 列为空,则把本行 C 列的值复制到上一行的 D 列,这样循环处理,再删掉空行,结果如下:

解法及简要说明

方法一:用序列的序列

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


A

1

=clipboard().split@n("\t")

2

=A1.run(if(~(1)=="",~[-1]=~[-1]|~(3))).select(~(1)!="")

3

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

简要说明:

A1   从剪贴板里读取数据,读成序列的序列

A2  循环处理 A1,如果当前序列的第一个成员为空,则把当前序列第三个成员的值追加到上一个序列,再过滤掉第一个成员为空的序列。

A3  将 A2 转为字符串

方法二:用序表

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


A

1

=clipboard@e().import().derive(_4)

2

=A1.run(if(#1==null,~[-1].#4=#3)).select(#1)

简要说明:

A1  从剪贴板里读取数据并增加一列 _4,选项 @t 表示首行是列标题

A2  循环处理 A1,如果当前行的第一列为空,则把当前行第三列值赋予上一行的第四列,再过滤掉第一列为空的记录。

执行程序后,在集算器中选中 A3(A2)单元格,再点击右侧对应的“copy data”按钮。在 Excel 点击 A8 单元格,按 Ctrl+V 就可以把计算结果粘贴过来。

问答搜集

https://stackoverflow.com/questions/63790459/check-cut-and-paste-delete-row-move