在excel中重塑具有多个类别的高数据

时间:2013-05-02 03:47:04

标签: excel excel-vba vba

我在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 个答案:

答案 0 :(得分:1)

首先要确保将问题分解为更小的问题:

查找工作表布局

确定国家/地区数量(以便了解不同数据范围的位置)

国家/地区1作为其余的基础

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

我们需要有国家名称。我想国家名称在列标题中(后跟-GDP,-UnEmp等,所以你可以很容易地从-GDP列中获取它,类似于= LEFT(Range.Value2; LEN(Range.Value2)) -4),关闭最后4个分支。将其保留为局部变量。

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

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

使用国家/地区的布局

,遍历其余国家/地区

现在我们开始遍历所有国家2 - N.将存储的日期副本粘贴在A列:A(因此1个国家/地区设置)下,获取coutnry名称(就像国家1一样)并将其放入在新粘贴的日期旁边。 并按国家/地区选择该国家/地区的不同国家/地区特征,并将数据移至相应的国家/地区列中。

对表格进行排序

按照您想要的任何顺序对数据进行排序(在您的情况下为日期/国家/地区)