数据表要​​分组,转置匹配值相同的行

时间:2016-09-15 10:31:20

标签: vba transpose

我在Excel中有一个数据表。 A列包含名称,B列包含其兴趣。每个兴趣都有一个单独的行。我想从这个表中获取数据,并且只有一行包含客户名称和每个兴趣列。 IE RAW数据:

enter image description here

我希望采用4000行表并按名称分组。我不确定每个名字出现在列表中的次数(一次或五十次)但我希望将兴趣放在一行中,每个兴趣都在一个单独的列中EG所需数据:

enter image description here

我已经尝试了标准转置.... html表....和数据透视表,但无论客户是否感兴趣并且使用记录数T /它都会将兴趣全部放在顶部F表示数据表更难以理解,如果我将其保留为一个块并按名称排序

当然,我并不孤单,但过去2小时的所有搜索都会继续回转/转置或重复项目。任何赞赏

2 个答案:

答案 0 :(得分:0)

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

现在,您当然可以使用VBA并完全按照您的需要执行操作。 但是,我建议您使用数据透视表。 如果您的数据看起来像这样......

raw data

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

pivot result

Etvoilà,您只有一次列出您的所有兴趣,如果一个人有兴趣,则会有“1”。

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

答案 1 :(得分:0)

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

在C2中,只需输入1.

在C3中,放=COUNTIF($A$2:$A2, $A3) + 1。这将找到该人的兴趣数量。

创建一个查阅列,例如在D列中。在D2中,放置=A2&C2

然后,列出所有人。我假设您将此列表放在新工作表的单元格A2中。然后将标题从B1开始,以便B1包含标题" 1"和C1包含标题" 2"代表您的利益号码和任意数量的列。

然后在Cell B2中,输入公式=IF(ISNA(MATCH($A2&B$1,data!$D$2:$D$5,0)),"",INDEX(data!$B$2:$B$5,MATCH($A2&B$1,data!$D$2:$D$5,0)))

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