不同值的Excel列表

不同值的Excel列表,excel,excel-formula,Excel,Excel Formula,我在a列有一张表,上面有一封客户电子邮件,在B列有他们购买的产品——大约有6万行 数据 ------------------------------------------------------ Email | Product | Time | ------------------------------------------------------ nayena@gmail.com | P1 | 27/02/2

我在a列有一张表,上面有一封客户电子邮件,在B列有他们购买的产品——大约有6万行

数据

------------------------------------------------------
Email              |  Product  |        Time         | 
------------------------------------------------------
nayena@gmail.com   |     P1    | 27/02/2020 18:09:41 |
yenaye@hotmail.com |     P2    | 28/02/2020 17:09:32 |
nayena@gmail.com   |     P1    | 29/02/2020 14:05:46 |
yenaye@hotmail.com |     P1    | 29/02/2020 13:02:04 |
yenaye@hotmail.com |     P2    | 29/02/2020 20:05:21 |
我想写两个新专栏

一个应该是客户销售了多少不同的产品。 另一个应该是这些不同产品的列表。(最好按日期排序,将在另一列中)预期结果:

期望的结果

---------------------------------------------------------------------
Email              |  Product  |        Time         |  Orders |  n  |
---------------------------------------------------------------------
nayena@gmail.com   |     P1    | 27/02/2020 18:09:41 |  P1     |  1
yenaye@hotmail.com |     P2    | 28/02/2020 17:09:32 |  P1|P2  |  2
nayena@gmail.com   |     P1    | 29/02/2020 14:05:46 |  P1     |  1
yenaye@hotmail.com |     P1    | 29/02/2020 13:02:04 |  P1|P2  |  2
yenaye@hotmail.com |     P2    | 29/02/2020 20:05:21 |  P1|P2  |  2
我试过类似的方法

=FILTER(B:B,A:A=A2)
=AGGREGATE(3,0,FILTER(B:B,A:A=A2))
但它会降低数值,溢出到下面的单元格中。而且它不具有唯一的值。 这在Python中是一个相当标准的操作,但我想知道如何在excel中以尽可能简单的方式实现这一点——我想这应该是相当直接的

我试过类似的方法

=FILTER(B:B,A:A=A2)
=AGGREGATE(3,0,FILTER(B:B,A:A=A2))

但是我不清楚如何将
过滤器
传递到
聚合

,如果您希望订单按日期排序,则无法获得所需输出的内容

您的一位客户将
P2
作为最早的和最新的,因此无论您以何种方式排序,它都将显示为
P2 | P1

下面的
订单
公式按日期排序。(不需要在
n
公式中排序)

要复制所需的结果,您必须按产品排序:

Orders:  =TEXTJOIN("|",TRUE,UNIQUE(INDEX(FILTER(SORT($A$2:$C$6,2,1 ),A2 = INDEX(SORT($A$2:$C$6,2,1 ),0,1)),0,2)))

  

注意:

  • 可以使用整列引用,但这会显著增加计算时间
  • 电源查询解决方案也很容易实现,但具体取决于您希望结果的显示方式

如果您希望订单按日期排序,则无法获得所需输出的内容

您的一位客户将
P2
作为最早的和最新的,因此无论您以何种方式排序,它都将显示为
P2 | P1

下面的
订单
公式按日期排序。(不需要在
n
公式中排序)

要复制所需的结果,您必须按产品排序:

Orders:  =TEXTJOIN("|",TRUE,UNIQUE(INDEX(FILTER(SORT($A$2:$C$6,2,1 ),A2 = INDEX(SORT($A$2:$C$6,2,1 ),0,1)),0,2)))

  

注意:

  • 可以使用整列引用,但这会显著增加计算时间
  • 电源查询解决方案也很容易实现,但具体取决于您希望结果的显示方式

您必须查看
UNIQUE()
,如果您想订购,请查看
SORTYBY()
。如果您有一个小的降价示例数据表,我们可以帮助您了解更多细节。啊,正确-执行
UNIQUE(FILTER(B:B,a:a=A2))
工作,但当有多个时,我得到
#溢出-理想情况下,我希望它类似于
产品1 |产品2
。我将尝试添加降价现在添加一些降价-希望这是明确的!您必须查看
UNIQUE()
,如果您想订购,请查看
SORTYBY()
。如果您有一个小的降价示例数据表,我们可以帮助您了解更多细节。啊,正确-执行
UNIQUE(FILTER(B:B,a:a=A2))
工作,但当有多个时,我得到
#溢出-理想情况下,我希望它类似于
产品1 |产品2
。我将尝试添加降价现在添加一些降价-希望这是明确的!