如何聚合'按其'分组的数据并将其用于Excel中的进一步计算(规范化)?

时间:2012-02-05 05:39:01

标签: excel group-by normalization

我在Excel工作簿中有一些数据。该数据是分层的,即,跨工作表的数据之间存在父子关系。以下是它在特定工作表中的显示方式:(右侧有其他行(在其上方)和列,但对此问题并不重要)

| Parent | Item | Score |
|   P1   |  I1  |   3   |
|   P2   |  I2  |   1   |
|   P1   |  I3  |   6   |
|   P3   |  I4  |  1.5  |
|   P4   |  I5  |   4   |

我们需要总计属于特定父母的所有项目,即父母的总数,以获得每个父母的“项目总和”。 ( root 工作表将没有任何父项(即空白列),但跨工作表的结构相同)。需要的是将父母子女的分数“归一化”,范围为0-1(编辑:,即孩子的分数之和必须总和为1)

我一直在玩数据透视表,我发现你可以按父级聚合数据。但我不确定如何使用该数据来规范项目分数。更重要的是,excel表格中的数据非常动态,而且根据我对数据透视表的最小经验,数据似乎没有自动刷新。

更重要的是,每个“子级工作表”都是从当前级别的工作表(使用宏)生成的。因此,我们需要一种能够通过父级汇总分数的方法,以便我们可以轻松地将其传播到复制时的下一个工作表(即使要手动完成)。

我只是在一个角落,能够在Excel中执行'Group By'(来自SQL)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果需要查找与给定条件匹配的所有值的总和,请使用SUMIF函数。我假设“父”在A列,B列中的“项目”和C栏中的“分数”。在D2中,您必须使用以下公式:= SUMIF(A:A; A2; C:C ),并将其复制下来。

但是,如果您想将分数放在0到1的等级上,您不需要知道父母子女分数的总和:您只需要知道父母子女的最高分数。由于MAXIF功能不​​存在,我们将使用结合MAX和IF的数组函数。在D2中键入此内容并按Ctrl + Shift + Enter:= MAX(IF(A:A = A2; C:C)。应添加括号以表明它是一个数组公式:{= MAX(IF(A: A = A2; C:C)}。现在你需要将孩子的分数除以其小组的最高分数。