重塑excel中的多个类别的宽数据

我有一个Excel中的数据集,看起来像这样:

Date Country1-GDP Country2-GDP Country1-Unemp Country2-Unemp 

我想要像这样产生一个标准化的数据集:

 Date1 Country1_Name Country1-GDP Country1-Unemp Date1 Country2_Name Country2_GDP Country2_Unemp Date2 Country1_Name Country1-GDP Country1-Unemp 

我想在VBA中这样做,以便我可以直接在Excel中将其作为macros调用。

任何想法或指针?

首先一定要把你的问题分解成更小的问题:

find工作表布局

确定国家的数量(所以你知道不同的数据范围在哪里)

国家1作为rest的基础

收集国家/地区1列,并为其添加“国家/地区名称”列(使用.xlEnd命令将其应用于正确数量的单元格,或者与date列相比.OFFSET)。

我们需要有这个国家的名字。 我想这个国家的名字是在列标题(后面跟着-GDP,-UnEmp等等,所以你可以很容易地从-GDP列中得到它,例如= LEFT(Range.Value2; LEN(Range.Value2) -4),最后4个charanctersclosures。保持这个作为一个局部variables。

保留date范围的副本(列A:A)以供重复使用

我们将存储date范围的副本,因为我们将在每个其他国家/地区将date粘贴到列A中:A

使用来自国家1的布局循环访问其余国家/地区

现在我们开始遍历所有的国家2 – N。粘贴存储在date下A列:A(所以1套1个国家)的date,获得coutnry的名字(就像国家1),并把它放在旁边新鲜的粘贴date。 逐个国家select该国的不同国家特征,并在相应的国家1栏下移动数据。

sorting你的表格

按您想要的顺序对数据进行sorting(date/国家)