【问题标题】:How to aggregate data 'grouped by' its parent and use that for further calculation (normalization) in Excel?如何聚合按其父级“分组”的数据并将其用于 Excel 中的进一步计算(标准化)?
【发布时间】:2012-02-06 02:31:37
【问题描述】:

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

|家长 |项目 |分数 | | P1 | I1 | 3 | | P2 | I2 | 1 | | P1 | I3 | 6 | | P3 | I4 | 1.5 | | P4 | I5 | 4 |

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

我一直在使用数据透视表,我发现您可以按父级聚合数据。但我不确定如何准确地使用这些数据来规范项目分数。更重要的是,Excel 工作表中的数据非常动态,从我对数据透视表的最低经验来看,数据似乎没有自动刷新。

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

我只能在 Excel 中进行“分组依据”(来自 SQL)。有什么想法吗?

【问题讨论】:

    标签: excel group-by normalization


    【解决方案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)}。现在你需要将孩子的分数除以其组的最高分数。

    【讨论】:

    • 我不能使用你提到的归一化,因为这会给我一个从 0-1 的基于线性插值“范围”的排名,而不是整体百分比贡献,例如[1, 5, 9] - 使用您的公式完成将给出 [0.111,0.556,1] 它们的总和不为 1,我无法确定“1”或“5”对总和的贡献有多少,可以这么说。我需要的是 [0.0667, 0.333, 0.6] : sum = 1 (可通过除以总和获得)
    • 好的。您应该使用我当时提到的 SUMIF 公式。
    • 老实说,我什至没有想到!谢谢:)
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多