嗯,这是一种非常不雅的蛮力方式,但我认为它有效。请参阅工作表中的 Solution-GK。
=QUERY({
{TRANSPOSE(SPLIT(REPT("Nigeria~",ROWS(UNIQUE(FILTER(NIGERIA!A:E,NIGERIA!C:C<TODAY(),NIGERIA!B:B="Charity Fundraiser")))),"~")),
UNIQUE(FILTER(NIGERIA!A:E,NIGERIA!C:C<TODAY(),NIGERIA!B:B="Charity Fundraiser"))};
{TRANSPOSE(SPLIT(REPT("Sierra Leone~",ROWS(UNIQUE(FILTER('SIERRA LEONE'!A:E,'SIERRA LEONE'!C:C<TODAY(),'SIERRA LEONE'!B:B="Charity Fundraiser")))),"~")),
UNIQUE(FILTER('SIERRA LEONE'!A:E,'SIERRA LEONE'!C:C<TODAY(),'SIERRA LEONE'!B:B="Charity Fundraiser"))}},
"select Col1,Col2,Col3,Col4, Col5 where Col2 is not null")
我添加了国家名称的硬编码文字,将其重复匹配数据行所需的次数,并将其放入现有数据数组的第一列。我对第二个国家/地区的第二个数组重复此操作。
我确信有更优雅的方法可以做到这一点,所以我们会看看还有什么建议。如果您的国家/地区名称表中有一个列表 - 即。尼日利亚和塞拉利昂,可能还有更多——我相信一个优雅的解决方案会循环遍历这些名称,提取名称以构建连接的数据范围,并将名称添加为每一行的文本。
不需要工作表中的列表,一点代码就可以找到所有选项卡名称,并排除非数据名称,例如。解决方案在这里和总结,并将其余所有作为数据处理。
注意:我不清楚您是否需要 UNIQUE 语句,除非您出于某种原因期望重复。此外,外部 QUERY 似乎没有必要 - 内部 FILTERs 似乎可以满足您的所有需求。