如何找到最接近平均值的数字

如何找到最接近平均值的数字

我有一个这样的样本,我想找到最接近平均值的值

城市和体重是两个独立的列

city  weight
A      23
A      22
A      45
A      97
B      34
B      22
B      23
C      76
C      23
C      23

我做了一个枢轴,计算了 A- 的平均体重,即 46.75

我需要找到最接近 A 的数字,在本例中是 45

我想我需要使用索引和匹配,但如果有 17,000 行具有重复的城市名称和不同的权重值,我该怎么做?

我将非常感激任何帮助

所以我正在寻找的答案是

Row Labels  Average of WEIGHT     nearest number
A                 46.75            45
B                 38.75            34
C                  23              23

大多数类似的答案都没有使用这个集合,请帮我设置这个我已经尝试过的公式:

INDEX(rawdata,MATCH(MIN(ABS(weight-$B2)),ABS(weight-$B2),0),2)

但是它会查看 AC 的整个权重数组。我只希望它在比较 A 的平均值时查看 A 的值,

然后比较 B 的平均值时 B 的权重,

等等....

请告诉我我的公式有什么问题?

提前致谢

答案1

编辑:

抱歉,我没有很好地理解你的问题,现在才意识到你明确表示要找到最接近Weight平均值的值城市价值之一计算平均值时。因此,我在下面更新了答案。

看起来你找到了XOR LX 的答案对于类似的问题,您几乎回答正确了。

MATCH()XOR LX 使用了一个非常巧妙的小公式,可以绕过搜索无序数据时的限制。我将在下面解释它的工作原理。

在下面显示的数据表中,我使用以下方法计算了平均值:

=AVERAGEIF(A$2:A$11,A14,B$2:B$11)(我得到的答案与您上面所示的不同)。

最接近Weight平均值的是:

=INDEX((A$2:A$11=A14)*(B$2:B$11),MATCH(TRUE,(A$2:A$11=A14)*ABS(B$2:B$11-B14)=MIN(IF(A$2:A$11=A14,ABS(B$2:B$11-B14))),0))

请注意,这是一个数组公式,因此必须用 来输入CTRLShiftEnter,而不仅仅是Enter

在此处输入图片描述 ______________________________________________________________________________

怎么运行的:

ABS(B$2:B$11-B14)是平均值与列表中所有数字之间的差值的数组Weight(A$2:A$11=A14)是等于 的值的数组。将这True/False两个相乘得到对应于 的位置的差值的数组,其余位置的差值。TrueCityA14City = A140

接下来我们要找到这些差异中的最小值,但我们必须创建一个略有不同的数组,因为如果数组中 有的话MIN()就会返回。00's

IF(A$2:A$11=A14,ABS(B$2:B$11-B14))检查其中,并返回这些位置与其他地方的和平均值City = A14之间的差值。WeightFalse

取该数组的最小值,MIN(IF(A$2:A$11=A14,ABS(B$2:B$11-B14)))得出最小的差异仅限那些位置 City = A14

现在,等式给出了当前 的最小差异位置上的值(A$2:A$11=A14)*ABS(B$2:B$11-B14)=MIN(IF(A$2:A$11=A14,ABS(B$2:B$11-B14)))的数组。 找到 的位置(即最接近的数字的位置),并将其输入到以返回实际值。True/FalseTrueCityMATCH()TrueINDEX()

我希望这个帮助能祝你好运。

相关内容