Table 数据要分组,转置匹配值同一行

Table of data want to group, transpose matching values same line

我在 Excel 中有 table 个数据。 A 列包含姓名,B 列包含他们的兴趣。每个兴趣都有一个单独的行。我想从这个 table 中获取数据,并在一行中包含客户的姓名和一列代表他们的每个兴趣。 IE 原始数据:

我希望获取第 4000 行 table 并按名称分组。我不确定每个名字在列表中出现了多少次(一次或五十次),但我希望兴趣放在一行中,每个兴趣在单独的列中 EG Desired Data:

我已经尝试过标准转置....html table.....和枢轴tables 但它会把所有兴趣排在顶部不管客户是否感兴趣并使用记录计数 T/F 这意味着数据 sheet 更难理解然后如果我将它作为一个块并按名称排序

当然,我并不孤单,但过去 2 小时的所有搜索都会返回 pivot/transpose 或重复项。不胜感激

首先使用标准 excel 功能删除重复项,以防止对一个人有两次相同的兴趣。

现在,您当然可以使用 VBA 并执行您需要的操作。 但是,我建议您使用枢轴table。 如果您的数据看起来像这样...

...只需使用 "Insert | Pivot table" 并将数据透视表 table 插入新工作表。 然后,按如下方式配置列:

Et voilà,你所有的兴趣只列出一次,如果一个人分享一个兴趣,就会有一个“1”。

如果您更愿意使用 VBA,请发表评论,我会编辑我的答案。

如果您不想使用 VBA,您可以先添加一列,例如在 C 列中,标题为 "InterestNum."

在C2中,只放1。

在C3中,输入=COUNTIF($A:$A2, $A3) + 1。这将找到该人感兴趣的数字。

创建一个查找列,例如在 D 列中。在 D2 中,输入 =A2&C2

然后,列出所有人员。我假设您将此列表放在新 sheet 的单元格 A2 中。然后将 headers 从 B1 开始,这样 B1 包含标题“1”,C1 包含标题“2”,代表利息编号和任意多的列。

然后在单元格 B2 中输入公式 =IF(ISNA(MATCH($A2&B,data!$D:$D,0)),"",INDEX(data!$B:$B,MATCH($A2&B,data!$D:$D,0)))

这假定您的原始数据位于 data 选项卡中。我只测试了 4 行,因此您需要更改 $D:$D 以拥有与您一样多的行。这是通过查找姓名和利息编号的组合来实现的。它首先检查数据中是否存在该组合。如果不是,则将该兴趣留空。如果是这样,它将通过转到查找的同一行找到实际兴趣。