使用Vlookup /macros来移调

在Excel中,我有一个独特的人员列表以及他们在各行中的不同列中保存的各种angular色,如下所示:

名称 angular色 angular色 angular色 angular色 angular色
John ABC null null
Jane DC null null null
丽莎ABCFG

我想转置每个唯一的“名称”的所有angular色,以便每个组合的名称 – angular色有一行,如下所示:

名称 angular色
约翰
约翰B
约翰C
Jane D.
Jane C.
丽莎A
丽莎B
丽莎C
Lisa F
Lisa G

是否有任何function或macros的组合,我可以利用这个输出在另一个工作表或相同的电子表格? 即使转置的行包含空值,我也可以在最后删除所有具有空值的行。 我有大约30多个用户,许多有20多个angular色,我试图分开,所以这可以节省我的时间,如果有一个自动化的方式来做到这一点。

在H2中:

 =OFFSET($A$1,CEILING((ROW()-1)/COUNTA($B$1:$F$1),1),0) 

在I2中:

 =VLOOKUP(H2,$A$2:$F$4,COUNTIF(H$2:H2,H2)+1,FALSE) 

填两下。

在这里输入图像说明

这将列出所有的名字,并且只要空值存在于每个人作为最右边的单元格就排除空值。 (意思是没有像A, B, Null, C, Null, D )。

在这里输入图像说明

H2 = =COUNTA(B2:F2) ,向下拖动

A7 = =A2

A8 = =IF(COUNTIF($A$7:A7,A7)<VLOOKUP(A7,$A$2:$H$4,8,0),A7,OFFSET(A$1,MATCH(A7,$A$1:$A$4,0),0)) ,向下拖动names * roles

B7 = =OFFSET($A$1,MATCH($A7,$A$1:$A$4,0)-1,COUNTIF($A$7:$A7,$A7))

编辑:

要消除H列,请将A8中的公式更改为以下内容:

 =IF(COUNTIF($A$7:A7,A7)<COUNTA(OFFSET($A$1,MATCH(A7,$A$1:$A$4,0)-1,1,1,COUNTA($A$1:$F$1))),A7,OFFSET(A$1,MATCH(A7,$A$1:$A$4,0),0))