Excel 根据指定列将每行复制出多行
例题描述
在 Excel 中有一张产品数量表,第一列为产品序号,第二列为产品剩余数量。初始数据如下:
Item ID |
Qty Remaining |
Invoice No |
00001 |
2 |
40404 |
00002 |
9 |
50505 |
00003 |
0 |
60606 |
现在需要根据产品的剩余数量,也就是 Qty Remaining,将 Item ID 的值重复 n 遍,除第一行为原始行,其他补齐的行只保留 Item ID 的值,且 00003 的数量为 0,则新表中不再有该记录,期望结果如下:
Item ID |
Qty Remaining |
Invoice No |
00001 |
2 |
40404 |
00001 |
||
00002 |
9 |
50505 |
00002 |
||
00002 |
||
00002 |
||
00002 |
||
00002 |
||
00002 |
||
00002 |
||
00002 |
实现步骤
使用插件 SPL XLL
在空白单元格写入公式:
=spl("=E(?).news(#2;'Item ID',if(#==1,'Qty Remaining',null):'Qty Remaining',if(#==1,'Invoice No',null):'Invoice No')",A1:C4)
如图:
返回结果:
简要说明:
根据第二列的数量,将每条记录重复 n 次,产生新的序表,其中二三列的值用 if 表达式,第一行时取原值,其他补齐行则用 null 值。
https://stackoverflow.com/questions/63711340/excel-return-cells-value-based-upon-another-cell
英文版
凑个热闹: