我试图根据产品名称数组在Google电子表格中进行总结。产品名称(单个产品和组合产品)通过类似的查询水平和动态列出。组合的产品标题用管道" |"。
分隔=TRANSPOSE(QUERY(Product_Range;"select A where "&SUBSTITUTE(ADDRESS(1;MATCH(B1;Customer_Range;0);4);1;"")&" > 0"))
我可以为分隔的产品标题制作一个静态公式(例如"产品1 |附加组件1 |附加组件3")并总结相关列,但标题/产品名称的顺序可以改变编辑。例如,列标题" Addon-on 1"可能是"产品2"在将来。所以我想动态地完成它。
https://docs.google.com/spreadsheets/d/1gJAZHLst707rnfcDTDYWwoLneSwhGgezYaCYpLKOtLI/edit?usp=sharing
这个公式正在提取单品的价格:
=SUM(
(VLOOKUP($A2 ;Products_Range ;MATCH( C$4; Products_Price_Range ;0);FALSE)) *
(VLOOKUP(C$4; Factor_Range; MATCH( Customer_Name;Customers_Range ;0);FALSE)) )
我需要某种循环来为嵌套在分隔的productheader中的每个productitem使用此公式。
我已经在Google Script中设置了自定义功能,但由于行数和连接的数量,性能非常慢。
所以我希望用原生公式快速完成这项工作。
请问您如何使用我的sum-formula(每个产品列和/或基于数组的产品列)?
我希望这可能吗?
答案 0 :(得分:0)
明确B3:B1950
B3:
=ARRAYFORMULA(VLOOKUP(B2;Factor!A:E;MATCH(A1;Factor!1:1;0);0)*MMULT(VLOOKUP(A3:A1949;Prices!A:E;(MATCH(SPLIT(B2;"|");Prices!1:1;0));0);(ROW(A1:index(A:A;counta(SPLIT(B2;"|"))))^0)))
从内到外:从分裂内部开始/匹配
编辑:
=ARRAYFORMULA(MMULT(VLOOKUP(A3:A1949;Prices!A:E;(MATCH(SPLIT(B2;"|");Prices!1:1;0));0);transpose(VLOOKUP(Split(B2;"|");Factor!A:C;MATCH(A1;Factor!1:1;0);0))))