我有一个Google表格表格,其中我的标题是从其他来源动态生成的,并且可以按任何顺序显示任何标题值。
在链接示例中我得到了标题值:AA - BB - CC - ABBA - KK - VV但它可能已经很好了:CC - AA - QQ - YY
我事先并不知道我会得到哪些标题,或者有多少标题。
我的问题是我想使用arrayformula对每行的每个产品值求和,其中列标题包括例如“BB”。
所以基本上=arrayformula(sumifs(G4:L1000,$G$3:$L$3,"BB"))
,如果这是一件事。
我最接近的猜测是我需要使用某种类型的VLOOKUP,但由于获取数据的列的索引不是静态的,我无法弄清楚如何解决它。
不顾一切地寻求帮助。
https://docs.google.com/spreadsheets/d/1ZcMldTJrFLz_f_w-lGMIuAKs_yGSc1eDXbA2tgr9Bw4/edit?usp=sharing
我可以获得与我的查询匹配的所有标头的数组(在B4:B中):
=TRANSPOSE(SPLIT(arrayformula(CONCATENATE(IF(REGEXMATCH(G3:L3,"BB"),G3:L3&"~",""))),"~"))
然后获取列索引(在C4:C中):
=iferror(arrayformula(match(B4:B,$G$3:$L$3,0)+6),"")
甚至是列字母(在D4:D中):
=iferror(arrayformula(REGEXEXTRACT(ADDRESS(ROW(), indirect("C4:C"&counta(B4:B)+3)), "[A-Z]+")),"")
然后我在vlookup中使用了这个半成品的想法,但现在我完全被完全卡住了。
您可以使用创建中间表
=filter(F3:L, arrayformula(regexmatch(F3:L3,"BB")))
然后在每个结果列上使用SUM
以获得所需内容。如果FILTER
结果从第2行开始,那么你可以将SUM
函数放在第1行,这样它们就不会妨碍FILTER
扩展。