首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否使用VBA在excel中进行熔化/重塑?

是否使用VBA在excel中进行熔化/重塑?
EN

Stack Overflow用户
提问于 2012-06-07 04:32:26
回答 5查看 12.9K关注 0票数 17

我目前正在适应一份新的工作,我与同事分享的大部分工作都是通过MS Excel完成的。我经常使用数据透视表,因此需要“堆叠”的数据,这正是R中reshape (reshape2)包中melt()函数的输出,我已经开始依赖它了。

谁能让我开始使用VBA宏来完成这项任务,或者已经有了这样的宏吗?

宏的大纲将是:

  1. 选择工作簿中的单元格区域。
  2. 启动"melt“宏。
  3. 宏将创建一个提示,”输入id列的数目“,您可以在其中输入标识信息列的前面的数目。(对于下面的示例R代码,它是4)。
  4. 在excel文件中创建一个标题为"melt“的新工作表,该工作表将堆叠数据,并创建一个标题为"variable”的新列,该列与原始选择中的数据列标题相同。

换句话说,输出看起来与简单地在R中执行以下两行的输出完全相同:

require(reshape)
melt(your.unstacked.dataframe, id.vars = 1:4)

下面是一个例子:

# unstacked data
> df1
  Year Month Country  Sport No_wins No_losses High_score Total_games
2 2010     5     USA Soccer       4         3          5           9
3 2010     6     USA Soccer       5         3          4           8
4 2010     5     CAN Soccer       2         9          7          11
5 2010     6     CAN Soccer       4         8          4          13
6 2009     5     USA Soccer       8         1          4           9
7 2009     6     USA Soccer       0         0          3           2
8 2009     5     CAN Soccer       2         0          6           3
9 2009     6     CAN Soccer       3         0          8           3

# stacking the data
> require(reshape)
> melt(df1, id.vars=1:4)

  Year Month Country  Sport    variable value
1  2010     5     USA Soccer     No_wins     4
2  2010     6     USA Soccer     No_wins     5
3  2010     5     CAN Soccer     No_wins     2
4  2010     6     CAN Soccer     No_wins     4
5  2009     5     USA Soccer     No_wins     8
6  2009     6     USA Soccer     No_wins     0
7  2009     5     CAN Soccer     No_wins     2
8  2009     6     CAN Soccer     No_wins     3
9  2010     5     USA Soccer   No_losses     3
10 2010     6     USA Soccer   No_losses     3
11 2010     5     CAN Soccer   No_losses     9
12 2010     6     CAN Soccer   No_losses     8
13 2009     5     USA Soccer   No_losses     1
14 2009     6     USA Soccer   No_losses     0
15 2009     5     CAN Soccer   No_losses     0
16 2009     6     CAN Soccer   No_losses     0
17 2010     5     USA Soccer  High_score     5
18 2010     6     USA Soccer  High_score     4
19 2010     5     CAN Soccer  High_score     7
20 2010     6     CAN Soccer  High_score     4
21 2009     5     USA Soccer  High_score     4
22 2009     6     USA Soccer  High_score     3
23 2009     5     CAN Soccer  High_score     6
24 2009     6     CAN Soccer  High_score     8
25 2010     5     USA Soccer Total_games     9
26 2010     6     USA Soccer Total_games     8
27 2010     5     CAN Soccer Total_games    11
28 2010     6     CAN Soccer Total_games    13
29 2009     5     USA Soccer Total_games     9
30 2009     6     USA Soccer Total_games     2
31 2009     5     CAN Soccer Total_games     3
32 2009     6     CAN Soccer Total_games     3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10921791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档