首页 > 解决方案 > 如何基于二级,甚至三级过滤器进行过滤?

问题描述

我有一张纸如下:

我需要计算当特定产品是他们的主要购买时购买了多少加售。

例如,产品 A 应返回 2(订单 102 和 108)。

Order ID    Date          Type         Customer ID    Product
100         2019-01-10    Main         21             A
102         2019-01-10    Upsell       21             B
104         2019-01-10    Main         22             A
106         2019-01-10    Main         23             A
108         2019-01-11    Upsell       23             C
110         2019-01-11    Main         24             A   
...         ...           ...          ...            ...

现在我FILTER在一个类似于这样的单元格中使用了一个令人讨厌的复杂:

=COUNTA(FILTER(A:A, C:C = "Upsell", D:D = FILTER(D:D, C:C = "Main", E:E = "A")))

但是,这似乎不起作用。它也不会完全满足需要。从技术上讲,如果有人后来还购买了产品 A 以外的任何其他产品作为他们的主要购买,那么在搜索产品 A 的加售数量时,他们的任何加售仍然会被计算在内。

有没有更简单/更可靠的方法来做到这一点?

是否可以在可以执行此操作的 Google Apps 脚本中设置循环?(遍历每个匹配的行,找到所有包含相同客户 ID 且在主要购买后 2 天或直到他们下一次主要购买之前加售的行?)

标签: google-apps-scriptgoogle-sheets

解决方案


您可以尝试重叠范围:

=COUNTA(FILTER(A3:A8,D2:D7=D3:D8,C3:C8="Upsell",C2:C7="Main",E2:E7="A"))

假设 A1:E7 有你的桌子,

  • C2:C7="Main",E2:E7="A"将是产品 A 主过滤器
  • C3:C8="Upsell"下一个产品是追加销售吗?
  • D2:D7=D3:D8购买加售商品和主要商品的客户是否相同?
  • FILTER以及COUNT相应的加售订单 ID。

推荐阅读