【问题标题】:Excel - calculate mean of cells defined by another worksheetExcel - 计算另一个工作表定义的单元格的平均值
【发布时间】:2016-11-15 23:08:27
【问题描述】:

我需要计算属于某种昆虫物种的宿主物种的某种性状的平均值。我的昆虫在这里被称为物种,其组织结构如图表 1 所示。mean_trait_of_hosts 列应计算 host_species 1 到 5 的平均性状值

表 1

寄主物种的组织方式如图表 2 所示,位于同一文件的单独表中。 所以我认为我需要的是一个函数,它在表 1 中相应行的 B:F 列中查找宿主物种,然后使用表 2 的值计算这些物种的平均值。不幸的是,我不知道如何在 Excel 中执行此操作。

表 2

有什么想法吗?

【问题讨论】:

    标签: excel mean


    【解决方案1】:

    使用这个数组公式:

    =AVERAGE(IF(B2:F2<>"",LOOKUP($B2:$F2,Sheet2!$A$2:INDEX(Sheet2!A:A,MATCH("ZZZ",Sheet2!A:A)),Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH("ZZZ",Sheet2!A:A)))))
    

    作为数组公式,退出编辑模式时必须使用 Ctrl-shift-Enter 而不是 Enter 来确认。如果操作正确,Excel 会在公式周围加上{}

    注意事项:

    1. Sheet2 上的列表必须按 A 列升序排序。
    2. 如果查找不在列表中,它将按字母顺序返回前一个值。


    为了处理上面的第二个警告,我们可以添加另一个 IF 来测试它们是否在平均之前的列表中:

    =IF(SUM(COUNTIFS(Sheet2!A:A,$B2:$F2,Sheet2!A:A,"<>"))<>SUMPRODUCT(--(LEN($B2:$F2)>0)),"Host(s) not in list",AVERAGE(IF(B2:F2<>"",LOOKUP($B2:$F2,Sheet2!$A$2:INDEX(Sheet2!A:A,MATCH("ZZZ",Sheet2!A:A)),Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH("ZZZ",Sheet2!A:A))))))
    

    这仍然是一个数组公式。作为一个数组公式,退出编辑模式时必须使用 Ctrl-shift-Enter 而不是 Enter 来确认。如果操作正确,Excel 会在公式周围加上{}

    Sheet2 上的数据仍必须按 A 列升序排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多