Google表格:如何使用arrayformula仅从特定的动态列集中查找和获取数据

问题描述 投票:0回答:1

我有一个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中使用了这个半成品的想法,但现在我完全被完全卡住了。

sumifs array-formulas google-sheets-formula gs-vlookup
1个回答
0
投票

您可以使用创建中间表

=filter(F3:L, arrayformula(regexmatch(F3:L3,"BB")))

然后在每个结果列上使用SUM以获得所需内容。如果FILTER结果从第2行开始,那么你可以将SUM函数放在第1行,这样它们就不会妨碍FILTER扩展。

© www.soinside.com 2019 - 2024. All rights reserved.