根据指定列将每行复制出多行

例题描述

在 Excel 中有一张产品数量表,第一列为产品序号,第二列为产品剩余数量。初始数据如下:

..

现在需要根据产品的剩余数量,也就是 Qty Remaining,将 Item ID 的值重复 n 遍,除第一行为原始行,其他补齐的行只保留 Item ID 的值,且 00003 的数量为 0,则新表中不再有该记录,期望结果如下图:

..

 

实现步骤

1.   打开集算器,新建文件。

2.      编写处理代码,代码以及含义如下:


A

B

1

=clipboard().import@t('Item   ID':string,'Qty Remaining','Invoice No')


2

=A1.news(#2;'Item ID',if(#==1,'Qty   Remaining',null):'Qty Remaining',if(#==1,'Invoice No',null):'Invoice No')


A1   先复制 Excel 的区域 A1:C4,然后将剪贴板中数据导入到序表。注意第一列的值要导入为 string 类型,所以需要指定该列的类型,否则会被当做数值处理。

A2   根据第二列的数量,将每条记录重复 n 次,产生新的序表,其中二三列的值用 if 表达式,第一行时取原值,其他补齐行则用 null 值。

 

3.      先在 Excel 中 Sheet2 页上复制好第一行标题,同样需要将第一列设置为文本类型,否则粘贴的数据又会被 Excel 当做数字处理。再运行代码,然后将 A2 格的内容复制,粘贴到 Excel 中 Sheet2 页的 A2 格。


问答搜集

https://stackoverflow.com/questions/63711340/excel-return-cells-value-based-upon-another-cell

【附件】 data.zip