-1

我有一个表格,表示一系列组件及其子组件,以及子组件各自的子组件,等等。它目前看起来像一棵树(一对多关系),但它可能会在某些时候变为类似于图(多对多关系)。不幸的是,它的作者的格式很差,看起来像这样:

格式不正确的表格

上述格式很差,因为存在大量数据重复,并且仅限于一组 (4) 层。相反,如果它看起来像这样,我会更喜欢:

格式精美的表格

上面的格式很好,因为数据重复很少,而且不限于固定的层数。

如果对表格的含义有任何混淆,这里是数据的图形表示:

图形树

将糟糕的格式转换为漂亮的格式很简单,但是有数百个根组件,手动输入数据会非常耗时且乏味。

我怀疑这个问题是独一无二的,我准备自己编写一些 VBA 代码来将表格解析成好的格式,但我想我会确保这不是我滚动之前预滚动解决方案的常见问题我自己的。

是否有一个技术术语来描述第一个表格中的不良格式?有没有比编写 VBA 宏更简单的方法来重新格式化数据?

4

2 回答 2

1

这可能是一个完全的偏差,但它适用于您的样品(目前我没有时间打破它!)

添加一个索引(和它的标签)和reverse pivot(例如,请参阅An excel formula to find a row/column index in array)。与其向下Grand Total钻取 s 截距,不如向下钻取层级的每个总数。

并排重新组合表格,删除除列之外的所有列Value,然后使用粘贴特殊值将表格复制到另一个区域。删除范围内的重复项。每次紧靠右边的列中的值没有改变时,删除并移动单元格中的值到左边。从右到左重新排列列。

于 2013-10-02T02:30:15.443 回答
0

我复制了表格中的每一对相邻列TierTier 1& Tier 2Tier 2& Tier 3Tier 3& Tier 4)并将它们垂直堆叠粘贴到一对列中(Subcomponent& Component)。

接下来,我通过选择两个新列并单击功能区选项卡来删除重复Remove DuplicatesData

接下来,我必须删除列中包含空白单元格的所有行Subcomponent。为此,我再次选择了这两列并通过单击功能区选项卡过滤Filter数据Data。我(Blanks)在列上的Filter菜单中选择Subcomponent并删除了所有可见的行。(Select All)我通过在过滤器菜单中选择删除了过滤器。

结果表包含许多空白行,因此我再次删除了重复项,然后手动将数据向上移动一行以替换剩余的空白行。

最后,花了大约半个小时,这可能比我编写宏所花费的时间要少,而且绝对比手动输入数据的时间要少。

于 2013-10-02T12:37:20.553 回答