excel - Excel 不同值列表
问题描述
我在 A 列中有一张客户电子邮件的表格,在 B 列中有他们购买的产品 - 大约有 60k 行。
数据
------------------------------------------------------
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)
但它降低了值,溢出到下面的单元格中。而且它没有独特的价值。这是 Python 中相当标准的操作,但我想知道如何以最简单的方式在 excel 中执行此操作 - 我想它应该是相当简单的。
我试过类似的东西
=AGGREGATE(3,0,FILTER(B:B,A:A=A2))
但我不清楚如何FILTER
传递给AGGREGATE
解决方案
如果您希望订单按日期排序,则无法完全获得您想要的输出显示的内容。
您的一位客户P2
既有最早的也有最新的,所以无论您以哪种方式排序,它都会出来P2|P1
下面的Orders
公式按日期排序。n
(公式中无需排序)
Orders: =TEXTJOIN("|",TRUE,UNIQUE(INDEX(FILTER(SORT($A$2:$C$6,3,1 ),A2 = INDEX(SORT($A$2:$C$6,3,1 ),0,1)),0,2)))
n: =COUNTA(UNIQUE(INDEX(FILTER($A$2:$C$6,A2=$A$2:$A$6),0,2)))
要复制您的Desired Result,您必须按产品排序:
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)))
笔记:
- 您可以使用整列引用,但会显着增加计算时间
- Power Query 解决方案也很容易实现,但取决于您希望如何呈现结果的具体细节
推荐阅读
- c# - 在 UI Image 前生成预制件
- c# - 如何在 EF Core 中为 DbQuery 使用延迟加载?
- android - 确保首先调用 FirebaseApp.initializeApp(Context)。默认 FirebaseApp 未在此过程中初始化 com.example.login
- react-native - 如何在本机反应中使单选按钮成行?
- html - 如何在输入类型=数字上设置加/减按钮?
- c# - 为什么将导航属性绑定到下拉列表不起作用?
- ruby - 如何更改哈希中的顺序?
- gams-math - 如何修复 GAMS 中的域违规错误
- php - 如何组合 3 个数组
- json - 在流程变量中传递 JSON 时出现错误的请求响应 - 可流动