遍历y数组的每个值时,y只提供需要操作的值,y的组织形式,如单行、单列、多行、多列等,均不影响最后生成结果的样式。
如下图,A:C列是原始数据,需要生成右侧的展开图:
参考公式如下:
- =IFNA(REDUCE(,A1:C9,LAMBDA(x,y,LET(s,COLUMN(y),IF(y>0,VSTACK(x,IF(s=1,y,HSTACK(EXPAND("",,s-1,""),TEXTSPLIT(y,,"、")))),x)))),"")
复制代码
公式简要说明如下:
=IFNA(
REDUCE(
, 省略第一参数,因为A1必然非空并会进入x
A1:C9,
LAMBDA(x, y,
LET(
s, COLUMN(y), 提取当前y所在的列
IF(
y > 0, 如果y>0也即非空单元格时,堆积
VSTACK(
x, 在x的下方堆积
IF(s = 1, y, 如果是第一列,直接堆积当前值(A列顶层部门名称)
HSTACK( 如果不是第一列,则堆积以下内容横向堆积结果
EXPAND("", , s - 1, ""), 生成s-1列的空值
TEXTSPLIT(y, , "、") 右侧堆积当前值y按顿号拆分的结果,不含顿号的y值保持不变
)
)
),
x
)
)
)
),
""
)
|