在Excel中“重置”平均值

请原谅我对我的问题的可怜的解释,任何有识之士将不胜感激。

我在一个固定的单元格开始使用excel中的平均值并填充。 例如:列B包含值,列C包含公式= AVERAGE($ B $ 1:B1),所以在第10行的公式是= AVERAGE($ B $ 1:B10)

我想知道是否有一种方法来计算这个平均值,将在列A中的值改变时“重置”。 使用IF函数获得A列更改的公式很容易,但是当平均值“重置”时,我不知道如何更改参考单元格。 我试图附上一个图像的公式,但我没有10声望,所以这里是一个简短的示例表的链接:

https://drive.google.com/file/d/0BymZUcneHsYgUnRoYkRkdnJYbmM/view?usp=sharing

如果可能的话,我宁愿不用VBA来完成。

非常感谢你。

编辑:当列A从“A”切换到“B”(或“B”到“A”)时,是否有可能在数据列旁边具有计数function,然后我可以简单地使用平均偏移与所得到的价值得到所需的平均?

你应该使用= AVERAGEIF函数。

=AVERAGEIF($A$1:A1,A1,$B$1:B1) 

以下是我最终解决这个问题的方法:

我使用= ROW() – MAX(INDEX((A $ 1:A2 <> A2)* ROW(A $ 1:A2)),直到“A”变为“B”或反之,然后用= ROW ()-MAX(INDEX((A $ 1:A2 <> A2)* ROW(A $ 1:A2))0来平均数据与上一个公式中计算的偏移量。

请注意,数据仍在列B中,列A中的“A”或“B”,并且这两个公式分别位于I和J中

非常感谢您的帮助

您可以使用Indirect来parsing自定义范围。 由于“A”中的值可能会在不同的块中多次出现,因此您必须添加一个额外的列来跟踪每个范围的起始行:

 (starting from row 2, [C1] = 1) =IF(A2<>A1,ROW(A2),C1) 

结果将在列“D”中:

 =AVERAGE(INDIRECT("B"& C1 &":B"&ROW(A1)))