2013-05-02 76 views
1

与多个类别,高大宽的数据我在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中将它作为宏调用,然后将数据拉入。

任何想法或指针?

+1

会不会有始终是相同的多个国家的任何命令的数据?列的名称,国内生产总值,Unemp等会一直保持不变吗? – Simon1979 2013-05-02 04:13:52

+1

您在哪里使用'CountryX_Name'列表,因为在您的基础数据集中没有这样的内容? – 2013-05-02 05:32:21

+0

@ simon1979国家数量可以改变,我有一个名称范围,其中列出的国家 – 2013-05-02 21:35:06

回答

1

首先一定要打破你的问题分成更小的问题:

查找纸张布局

确定各国的

数(所以你知道不同的数据范围)国家1作为其余的基础

收集国家1列并添加国家名称列(u se .xlEnd命令将其应用于正确数量的单元格,或者与日期列相比,.OFFSET)。

我们需要为此设置国家名称。我想国家名称在列标题中(后面跟着-GDP,-UnEmp等,所以你可以很容易地从-GDP列中得到它,例如= LEFT(Range.Value2; LEN(Range.Value2) -4),它在过去4个charancters断保持这个作为一个局部变量

保留日期范围的副本(列A:A)进行再利用

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

使用来自国家/地区的布局1

现在我们开始循环遍历所有国家的2-N。在A列下粘贴存储的日期副本:A(如此为1个国家设置1个),获取coutnry名称(与国家1相同)和把它放在刚粘贴的日期旁边。 按国家/地区选择该国家/地区的不同国家/地区特征,并在相应的国家/地区1列下移动数据。

排序表格

排序在你想(在你的情况下,日期/国家)

+0

非常感谢,只有一个小问题与'保留日期范围的副本复用'。这可能看起来真的很新奇,但是在内存中创建和存储临时范围的最佳方式是什么? – 2013-05-03 04:35:10

+0

创建一个'Range'对象('Dim rDates as Range')。将它指向A2:Axxx中的日期范围('Set rDates = Range(fromcell,tocell)')。我猜'fromcell'(也是'Range')应该是Range(“A2”)''和'tocell'类似于'Range(“A2”)。End(xlDown)''。 – 2013-05-03 07:37:40