将数据按B列中的斜杠拆分,结果如图右表:
E列使用公式:
=TEXTSPLIT(TEXTJOIN("/",,B2:B4),,"/")
公式先使用TextJoin函数,将B2:B4全部按斜杠合并,变成“A/BB/CCC/甲/乙/XX/丙丁”
再使用TextSplit函数,将合并的结果按斜杠拆分,分隔符是第三参数,所以结果形成一列。
D列使用公式:
=SUMIF(B2:B4,"*"&E2#&"*",A2:A4)
想要一个公式一步到位也可以:
=VSTACK(A1:B1,LET(a,TEXTSPLIT(TEXTJOIN("/",,B2:B4),,"/"),HSTACK(SUMIF(B2:B4,"*"&a&"*",A2:A4),a)))
公式中用到以下M365“硬塞的”版最新函数:
拆分函数:=TEXTSPLIT(字符串, 分列分隔符, 分行分隔符, 是否忽略空单元格, 填充值)
纵向堆叠:=VSTACK(数组1, 数组2,… , 数组254)
横向堆叠:=HSTACK(数组1, 数组2,… , 数组254)
PS,经测试,TextSplit的第一参数无法使用数组,这个可以理解,毕竟每个值中分隔符个数不同会导致结果不是完整矩阵,但是该函数的第五参数为填充值,貌似好像又是为填补不存在的值所用,猜测未来版本更新后,会否加上这一功能……