|
楼主 |
发表于 2022-11-26 21:08
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
最后,再对上述公式进行简单说明:
1)dx的初始参数:
=UNIQUE( 对筛选出来的0级母件数组去重
FILTER( 筛选0级母件
CHOOSE({1,2,3},0,A2:A32,1), 给列产品名称前面加上0,后面加上1,形成多行3列的数组,作为FILTER函数第一参数
1=IFNA(MATCH(A2:A32,B:B,),1) 筛选0级母件,标准是A列名称在B列没有出现过。直接用ISERR(MATCH())或其他公式均可
)
)
2)定义的dx名称:
=LAMBDA(z,
DROP(REDUCE(0,
SEQUENCE(ROWS(z)), 获取筛选的子件数组行数序列
LAMBDA(x,y,
LET(s,INDEX(z,y,), 提取筛选出来的每一行,逐行进行处理
t,FILTER($B$2:$C$32,$A$2:$A$32=INDEX(s,2),0), 筛选当前产品的子件,如果没有返回0
IF(COUNTA(t)=1, 如果FILTER部分返回0,则说明当前产品已经是最终原材料
VSTACK(x,s), 直接堆叠当前行
VSTACK(x,s, 堆叠当前行的基础上继续堆叠dx返回结果
dx(HSTACK(@s*TAKE(t,,-1)^0+1,t)) 重复调用dx,参数为当前层级号+1和t组成的数组
)
)
)
)
),
1)
)
|
|