4

可能很复杂,所以让我给你一些背景:

我有一个包含以下数据的电子表格:

  1. H 列包含从 1794 年到 2011 年的日期(在“H”内,该日期的每个立法者的每个日期都有多个副本)
  2. Q 列包含范围从 -1 到 1 的分数 我想计算 H 列中每个日期在 Q 列中的平均“正”值,然后打印出来。

例如:

1794: Average Positive Value : .65, Average Negative:  -.20
1795: Average Positive Value: .75, Average Negative: -.11

我试图四处搜索以弄清楚如何做到这一点,但我不知道相关的搜索词。将不胜感激一些帮助。

谢谢!

4

4 回答 4

5

这里我们使用 ARRAY 公式的简单方法。请看快照

=IFERROR(AVERAGE(IF(($H$1:$H$7=K10)*($Q$1:$Q$7>0),$Q$1:$Q$7)),"")

您必须使用 CTL + SHIFT + ENTER 输入

在此处输入图像描述

于 2012-04-17T17:57:43.383 回答
3

没有数组公式的解决方案是使用SUMPRODUCT.

=SUMPRODUCT(--(H1:H7=K10),--(Q1:Q7>0),Q1:Q7)/SUMPRODUCT(--(H1:H7=K10),--(Q1:Q7>0))

我用 SUMPRODUCT 撕掉了下面显示的 Siddharth 的示例。

在此处输入图像描述

于 2012-04-17T18:53:22.873 回答
2

您应该可以为此使用 SUMIFS/COUNTIFS。

对于正值:

=sumifs(Q:Q,H:H,1794,Q:Q,">0")/countifs(H:H,1794,Q:Q,">0")

对于负值:

=sumifs(Q:Q,H:H,1794,Q:Q,"<0")/countifs(H:H,1794,Q:Q,"<0")
于 2012-04-17T17:58:36.537 回答
0

这可能被认为是一种 hack,但您可以只使用一些隐藏列,每个数据点都有一个复制的 IF 公式。为了显示:

添加另一个具有 IF(Q > 0, Q, 0) 的列 A 添加另一个具有 IF(Q > 0, 1, 0) 的列 B 添加另一个具有 IF(Q < 0, Q, 0) 的列 C 添加另一个具有 IF(Q < 0, 1, 0) 的 D 列

然后,要确定平均值,您可以分别简单地执行 SUM(A) / SUM(B) 和 SUM(C) / SUM(D),因为它是总值除以真实出现的次数。

于 2012-04-17T16:47:31.643 回答