取消规范化表格数据 - Excel功能

时间:2014-08-10 14:35:16

标签: excel excel-vba excel-formula vba

我有一个Excel时间表表格/矩阵,需要'去规范化'才能准备要在数据透视表中使用的数据。

我的表包含时间表条目,每个单元格代表一个专用于特定任务的15分钟插槽(行=时间段)(列=日​​期)。

实施例

当前数据

    A           B           C           D           E           ..      ..
    ----------- ----------- ----------- ----------  ----------  -----------
1|              01-Jan-14   02-Jan-14   03-Jan-14   04-Jan-14   ..      ..
2|   00:00      task1       task3       task3       task1       ..      ..
3|   00:15      task1       task3       task2       task1       ..      ..
4|   00:30      task2       task3       task2       task1       ..      ..
5|   01:45      task3       task3       task3       task2       ..      ..
    ..
    ..

期望的结果(在新页面中):

    A           B           C
  ------------  ----------- ------  
1|   Date       Task        Count  
2|   01-Jan-14  task1       2 
3|   01-Jan-14  task2       1
4|   01-Jan-14  task3       1
5|   02-Jan-14  task3       4 
6|   03-Jan-14  task3       2
7|   03-Jan-14  task2       2
8|   03-Jan-14  task1       3
9|   04-Jan-14  task2       1
..
..

请注意,我有固定的行数(时间段)和可变数量的列(尽管我一年中的每一天都有1列 - 闰年会导致某些年份的天数/列数减少)

如果可能的话,我想尽量避免使用VBA,但是如果这些解决方案可以解决我的问题就不会被忽略。

1 个答案:

答案 0 :(得分:0)

如果没有VBA,我可以提供以下解决方案:

在您想要的结果中

A2 =INDEX(CurrentData!$1:$1,,(ROW(A1)-1)/4+2)
B2 =INDEX(CurrentData!$2:$5,MOD(ROW(A1)-1;4)+1,(ROW(A1)-1)/4+2)

这些公式中的4必须更改为行数。你的行数为5美元+1。

这应该可以在数据透视表中使用。计数是数据透视表任务。

问候

阿克塞尔