ArrayFormula 按多个条件检索列表

ArrayFormula retrieve list by multiple criterias

输入

数据sheet

TaskId  ClientId Canceled
1             1         0
2             1         0
3             1         0
4             2         0
5             2         1
6             2         0
7             3         0

举报sheet

ClientId
1
1
2
3

期望的输出

Arrayformula 从数据中获取所有 TaskIds,其中 Canceled = 0

TaskIds
1
2
3
1
2
3
4
6
7

我有 join + filter 公式可以向下拖动,它为我提供了客户的所有 TaskId:

ClientId  TaskIds
1          1,2,3
1          1,2,3
2          4,6
3          7

然后我从这个 helper_column:

得到我的结果

=transpose(split(join(",", helper_colum)))

而且我想在不需要拖延的情况下完成这项工作。

试试这个:

  =ARRAYFORMULA(TRANSPOSE(SPLIT(CONCATENATE(""&TRANSPOSE(IF(TRANSPOSE(A11:A14)=B2:B8,IF(C2:C8=0,A2:A8,""),""))),"")))

A11:A14=报告 sheet 客户端 ID。
A2:C8=数据 sheet 值。
干杯

在 'Report' 选项卡 this spreadsheet 中,我输入的单元格 B2

=arrayformula(vlookup(A2:A5&"", regexreplace({unique(filter(Data!B2:B, Data!C2:C=0))&"", trim(transpose(query(if((transpose(unique(filter(Data!B2:B, Data!C2:C=0)))=filter(Data!B2:B, Data!C2:C=0))*len(filter(Data!B2:B, Data!C2:C=0)),filter(Data!A2:A, Data!C2:C=0)&",",),,50000)))},",$", ), 2, 0))