我有一个包含以下形式的超过80K条目的大型数据集:
Name Date Value
1T17_4H19_3T19_3T21_2_a_2 09-Aug-11 -9.3159
1T17_4H19_3T19_3T21_2_a_2 10-Aug-11 -6.9662
1T17_4H19_3T19_3T21_2_a_2 11-Aug-11 -3.4886
1T17_4H19_3T19_3T21_2_a_2 12-Aug-11 -1.2357
1T17_4H19_3T19_3T21_2_a_2 15-Aug-11 0.1172
5 25_4Q27_4T30_4H34_3_3_3 19-Jun-12 -2.0805
5 25_4Q27_4T30_4H34_3_3_3 20-Jun-12 -1.9802
5 25_4Q27_4T30_4H34_3_3_3 21-Jun-12 -2.8344
5 25_4Q27_4T30_4Q32_a_a_a 25-Sep-07 -0.5779
5 25_4Q27_4T30_4Q32_a_a_a 26-Sep-07 -0.8214
5 25_4Q27_4T30_4Q32_a_a_a 27-Sep-07 -1.4061
这些数据都包含在一个工作表中 . 我希望excel根据名称分隔数据,然后将每个时间序列放在同一工作簿中的单独工作表中 . 这可能与VBA有关吗?
2 回答
如果要录制宏以查看发生的情况,请按照下列步骤操作:
打开宏录制器
按名称对数据排序
从第一个名称复制数据
将其粘贴到另一张纸上(如果需要另一张纸,请添加一张纸)
为工作表命名
重复下一个名字
我还编写了一些可用于入门的代码 . 为此,您需要将数据选项卡命名为“MasterList” . 代码按名称对MasterList上的行进行排序,然后对于列表中的每个唯一名称,创建一个新工作表并将相应的数据复制到新工作表,重复该过程,直到所有名称都已复制到新工作表 .
将此代码添加到模块并运行
DispatchTimeSeriesToSheets
过程 .我尝试了这个代码,它对我有用 .
这将分割数据(基于唯一名称)并将其粘贴到单独的工作表中,该工作表的名称与A列中的名称相同 .
我在这段代码中所做的是:
删除除具有初始数据表的工作表之外的所有工作表
处理'Name'列并创建一个'markers'数组,指示每个数据拆分的位置
创建一个新工作表,并根据数组中的值将数据复制到该工作表