根据指定列将每行复制出多行
例题描述
在 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
英文版