在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)))