Excel: 根据其他列的值计算平均值

Excel: calculate averages based on other column's value

我有一个数据sheet 包含两个巨大的列,都具有整数值。一列中的值范围为 1-11,另一列中的值范围为 0-22。这些值不以任何方式排序。在单独的 sheet(同一文件)中,我想显示每步的平均值。

示例:

A   B
-------
2   3
4   0
6   2
2   9
4   12
1   9
1   18

在另一个选项卡中,我希望看到:

Values A   Average B   Values B   Average A
--------------------------------------------
 1          14          0          4
 2          6           2          6
 4          6           3          2
 6          2           9          2
                        12         4
                        18         1

我想用一个函数来解决这个问题,该函数看起来循环遍历每一列的值,并在该循环期间取列中与该值对应的行的平均值。手动的话,太麻烦了。

我尝试使用 AVERAGEIF 但没有任何成果。

如果您正在table 构建一个数据透视表 table,您可以在您的数据上构建一个数据透视表 table。当 A 是行字段时,在值中使用 B 的平均值。应该给你结果。反之亦然应该产生结果的右半部分。

如果您想同时查看两者,一个选项卡可以在行字段中包含 A,在值字段中包含 B 的平均值。您可以在另一个 sheet 中构建另一个枢轴,其中 B 在行字段中,A 的平均值在值字段中。

如果您希望并排显示结果(第一部分的 2 列和第二部分的接下来的两列),您可以将枢轴 tables 放置在彼此旁边( Move a Pivot Table) 由于源数据将完全相同,如果基础数据发生任何变化,一个简单的刷新数据透视表 (Alt+F5) 应该会更新值。

(如果您以前没有这样做过)如何在值字段中获取平均值:Change the summary function for a field in a PivotTable report

您可以尝试使用 AVERAGEIFS。这对我有用。

=IFERROR(AVERAGEIFS('analyse-logs'!B:B, 'analyse-logs'!A:A, A1), 0)

以上代码适用于 A 值。 A1 指的是引用您的值的单元格(或者您可以像在原始函数中那样使用 A=1 )。我在这种情况下使用了 IFERROR,因此没有匹配项的引用将 return 0 作为平均值。

尝试:

=AVERAGEIF('analyse-logs'!A:A;A1;'analyse-logs'!B:B)

此致