相关疑难解决方法(0)

使用VBA融化/重塑excel?

我正在适应一项新工作,我与同事分享的大部分工作都是通过MS Excel进行的.我经常使用数据透视表,因此需要"堆叠"数据,恰好是R melt()中的reshape(reshape2)包中的函数输出,我已经依赖它了.

任何人都可以让我开始使用VBA宏来完成此任务,还是已经存在?

宏的轮廓将是:

  1. 在Excel工作簿中选择一系列单元格.
  2. 开始"融化"宏.
  3. 宏将创建一个提示"输入id列数",您可以在其中输入标识信息列之前的数字.(对于它下面的示例R代码是4).
  4. 在excel文件中创建一个名为"melt"的新工作表,该文件将堆叠数据,并创建一个标题为"variable"的新列,该列等于原始选择中的数据列标题.

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

require(reshape)
melt(your.unstacked.dataframe, id.vars = 1:4)
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

# 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 …
Run Code Online (Sandbox Code Playgroud)

vba pivot-table r excel-vba reshape2

16
推荐指数
2
解决办法
9130
查看次数

Excel VBA - 在一个单元格中组合具有重复值的行,并在其他单元格中合并值

我试图在一列中找到重复值,并将第二列的值合并为一行.我还想在第三列中对值进行求和.

例如:

A    B    C    D
h    4    w    3
h    4    u    5
h    4    g    7
h    4    f    4
k    9    t    6
k    9    o    6
k    9    p    9
k    9    j    1
Run Code Online (Sandbox Code Playgroud)

会成为

A    B    C        D
k    9    t;o;p;j  22
h    4    w;u;g;f  19
Run Code Online (Sandbox Code Playgroud)

我在第一部分使用的代码是

 Sub mergeCategoryValues()
Dim lngRow As Long

With ActiveSheet

lngRow = .Cells(65536, 1).End(xlUp).Row

.Cells(1).CurrentRegion.Sort key1:=.Cells(1), Header:=xlYes 
Do

    If .Cells(lngRow, 9) = .Cells(lngRow + 1, 9) Then
        .Cells(lngRow, 11) = …
Run Code Online (Sandbox Code Playgroud)

excel vba duplicates excel-vba

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel-vba ×2

vba ×2

duplicates ×1

excel ×1

pivot-table ×1

r ×1

reshape2 ×1