将多行转置为列

时间:2015-11-28 09:46:39

标签: excel excel-vba excel-formula transpose vba

我遇到过这个任务而且我遇到了很多困难。我已经尝试了数据透视表,但它没有给我想要的结果。唯一有效的是手动转置,但记录数量是5k奇数。

我在这里想要实现的是将公司行中的数据转换为列,以便在稍后阶段计算投票数和每家公司的平均值。

SO33969916 question example

3 个答案:

答案 0 :(得分:1)

数据透视表可以完成这项工作。您只需使用COUNTIFS帮助列。注意单元格D2中的公式。

enter image description here

数据透视表看起来像这样(设置为表格布局)

enter image description here

enter image description here

当记录数量增长到大约10k或更多(或者只是我的慢速PC:/)时,COUNTIFS可能会变得非常慢。发生这种情况时,解决方法是:首先对数据进行排序,然后仅在有限数量的单元格上使用COUNTIFS。例如,在单元格D2处,公式将为=COUNTIFS(A2:A102,A2,B2:B102,B2),因此在您填写公式时,只计算100个记录而不是整个记录。

答案 1 :(得分:0)

如果您想要的是投票数和每家公司的平均值,那么可以通过多种方式完成。

使用数据透视表,将公司拖到行区域;将评级拖动到值区域两次。然后将其中一个评级的值字段设置更改为计数;另一方面是平均值。

添加一些格式和各种选项为您提供:

enter image description here

或者,如果您有一个组织(公司名称)列表,我们说,G3:Gn,以及您在A:C列中的数据表,您可以使用公式:

Count:    H3: =COUNTIF($B$1:$B$1000,G3)
Average:  I3: =AVERAGEIF($B$1:$B$1000,G3,C1:$C$1000)

尽可能填写。

enter image description here

答案 2 :(得分:0)

由于您提到PT不适合,假设RATING在F2中,请尝试复制G3以适应:

=IF(AND(COLUMN()-7<COUNTIF($E:$E,$E3),$E2<>$E3),OFFSET($F3,COLUMN()-7,0),"")  

然后将所有公式拖到右边,直到整个列显示为空白。请注意,这需要对TARGET ATTENDEE ORGANIZATION列进行排序。