我在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)。有什么想法吗?
答案 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)}。现在你需要将孩子的分数除以其小组的最高分数。