在Google表格中,我正在尝试扩展可以执行以下操作的查询或数组:
Here is an example google sheet (EDITABLE - feel free),您可以在其中看到两个源表(表1和2)和所需的输出表(现在手动完成)。在工作表中向下滚动以使用基于公式的输出。
这是一个带有示例的简单摘要:
想法是为每个人的水果在多行上有一组“指令”。
此公式仅能获取单个水果的所有详细信息(无人名):
= FILTER(query($ E $ 3:$ G $ 9,“ select E,F,G”),$ E $ 3:$ E $ 9 =“”&$ B $ 3&“”)
(其中B3 =“苹果”)
但是我不确定是否可以通过某种方式将它们与名称结合在一起并使其具有动态性-因此,如果添加更多的人或水果,输出列表将完全更新。 例如:
= {人果1;人果2;人果N}
我完全可以使用中介表或其他方法来获得结果。
答案 0 :(得分:2)
我制作了带有解决方案的选项卡副本(公式以黄色突出显示)。该方法基本上是将文本拼接成CSV类型的格式。我用“;”分隔行,用“,”分隔列。最后一步是使用拆分/数组公式将其解析出来。
创建CSV类型的字符串:
=arrayformula(
TEXTJOIN(",",true,
Query(
{arrayformula(";"&$A$3:$A$8&","&$C$3:$C$8),$B$3:$B$8},
"Select Col1,'"&E3&","&F3&","&G3&"' where Col2 ='"&E3&"'")))
解析字符串:(外部查询功能是清理/清除空白行,并重新排列以匹配的列)
=query(
arrayformula(split(
transpose(split(
TEXTJOIN(";",true,J2:J10),
";",true,true)),",",true,true)),
"Select Col1,Col3,Col2,Col4,Col5 where Col5 is not null",0)
此方法的唯一局限性在于,文本连接最多只能包含5万个字符,因此,如果要处理较大的数据集,则必须重复第二个公式并用{进行堆叠; }。