Excel(或VBA)条件转置行

时间:2016-02-12 14:38:49

标签: excel vba excel-vba

我的数据集下面有几个月的列标题,我想根据当前的月份复制行。我遇到的一个问题是自动化,因为用户不断被添加/删除。

UserID  User State Jan($) Feb ($) Mar ($) .... Dec ($) 
111     AAA   CT    $55    $100   $125         $100       
112     BBB   NJ    $50    $34    $125         $125  
113     CCC   NV    $55    $100   $125         $155  
114     DDD   VT    $95    $108   $75          $199  
115     EEE   NJ    $20    $100   $125         $120  

示例输出:

UserID User State Month Spend
111    AAA   CT    Jan   $55
111    AAA   CT    Feb   $100
111    AAA   CT    Mar   $125
111    AAA   CT    Apr   $80
111    AAA   CT    May   $70
.
.
.
115    EEE   NJ    Nov  $50
115    EEE   NJ    DEC  $120

2 个答案:

答案 0 :(得分:2)

对于公式答案:

![enter image description here

前3列:

在第一列的第一个单元格中,您需要数据,我的是A11:

=INDEX(A:A,QUOTIENT(ROW(1:1)-1,12)+2)

本月:

复制两列,然后复制。

在您想要数据的第四列的第一个单元格中,我的是D11:

=CHOOSE(MOD(ROW(1:1)-1,12)+1,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")

然后复制。

金额:

在您想要数据的第五列的第一个单元格中,我的是E11:

=INDEX($A:$O,QUOTIENT(ROW(1:1)-1,12)+2,MOD(ROW(1:1)-1,12)+4)

然后将其复制下来。

答案 1 :(得分:0)

你没有说Access,但是这里是如何在Access中完成的。我不认为Excel数据透视表能做到这一点......? 您需要与交叉表查询相反的排序 联盟查询就是这样做的 看看这个例子是否让你朝着正确的方向前进。

enter image description here

enter image description here