Excel重用范围,由另一个函数使用

我有一个单元格C1,其中C1 = AVERAGE(E1:E10)。 在单元格D1中,我想要D1 = STDEVP(E1:E10),而不需要明确地键入范围E1:E10,因为我需要多次使用此范围和其他范围。

是否有一个简单的方法来获取/引用C1中的受影响的范围,以供另一个单元格中的另一个函数使用? 像D1 = STDEVP(AFFECTEDRANGE(C1))。

我发现了一个名为INDIRECT的函数,它大致上是我想要的,但是为了我的目的,它需要额外的列。 因为我喜欢保持我的工作表干净和紧凑,我更喜欢上面描述的function。 像这样的单线是否存在?

replace Range.Formula属性似乎已经足够了。

range("d1").formula = replace(range("c1").formula, "AVERAGE", "STDEVP", vbtextcompare) 

如果要保留在工作表中并避免VBA,请使用命名范围。

解决了这个问题:我把Jeeped的答案和这篇文章的答案合并在一起,创build了一个自定义的可重用函数,它可以满足我的需要。

现在通过设置=AverageToStDev(CELL)作为任何单元的值。 请注意,CELL必须是包含AVERAGE()函数的单个单元格才能工作。

 Function AverageToStDev(MyCell As Range) Application.Volatile AverageToStDev = Evaluate(Replace(MyCell.Formula, "AVERAGE", "STDEVP", vbTextCompare)) End Function