根据我下面的屏幕截图,在第 4 行试试这个:
=arrayformula(query(iferror(array_constrain({vlookup({flatten(split(row(E4:E)&rept(","&0,len(H4:H)-len(regexreplace(H4:H,",",""))),","))},{row(E4:E),A4:D},{2,3,4,5},false),flatten(split(E4:E,",")),flatten(split(F4:F,",")),flatten(split(G4:G,",")),flatten(split(H4:H,",")),flatten(split(I4:I,",")),vlookup({flatten(split(rept(0&",",len(H4:H)-len(regexreplace(H4:H,",","")))&row(E4:E),","))},{row(E4:E),E4:J},7,false)},max(if(F4:F<>"",len(F4:F)-len(regexreplace(F4:F,",",""))+1,))*counta(F4:F),10),),"where Col6 is not null",0))
它由 3 个部分组成:
前 4 列:
=arrayformula(iferror(vlookup({flatten(split(row(E4:E)&rept(","&0,len(H4:H)-len(regexreplace(H4:H,",",""))),","))},{row(E4:E),A4:D},{2,3,4,5},false),))
中间5列:
=arrayformula(array_constrain({flatten(split(E4:E,",")),flatten(split(F4:F,",")),flatten(split(G4:G,",")),flatten(split(H4:H,",")),flatten(split(I4:I,","))},max(if(F4:F<>"",len(F4:F)-len(regexreplace(F4:F,",",""))+1,))*counta(F4:F),6))
最后总计栏:
=arrayformula(iferror(vlookup({flatten(split(rept(0&",",len(H4:H)-len(regexreplace(H4:H,",","")))&row(E4:E),","))},{row(E4:E),E4:J},7,false),))
假设:
当 E、F、G、H、I 列中有逗号分隔的项目时,同一行的单元格中的数量相同。数量可以在不同的行上有所不同。该示例将第 4 到 7 行显示为 3,2,3,4 项。
您的 GrandTotal 数字已经计算出来了。
如果这有帮助,请考虑https://stackoverflow.com/help/someone-answers :-)