расплавить/изменить форму в Excel с помощью VBA?

В настоящее время я приспосабливаюсь к новой работе, где большая часть работы, которой я делюсь с коллегами, выполняется в MS Excel.Я часто использую сводные таблицы, и поэтому мне нужны «сложенные» данные, а именно вывод функции melt()в пакете reshape(reshape2) в R, к которому я пришел. полагаться на это.

Может ли кто-нибудь помочь мне начать работу с макросом VBA, чтобы выполнить это, или он уже существует?

Схема макроса будет следующей:

  1. Выберите диапазон ячеек в книге Excel.
  2. Запустить макрос "плавить".
  3. Макрос создаст подсказку «Введите количество столбцов идентификатора», где вы должны ввести количество предшествующих столбцов идентифицирующей информации. (для примера кода R ниже это 4).
  4. Создайте новый рабочий лист в файле Excel с названием «плавить». это укладывало бы данные и создавало новый столбец под названием «переменная». равны заголовкам столбцов данных из исходного выбора.

Другими словами, вывод будет выглядеть точно так же, как результат простого выполнения этих двух строк в 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
16
задан landroni 31 July 2014 в 18:21
поделиться