Q:在如下图1所示,在列E中添加新的价格增长值后,列B中的价格会自动更新,如何用公式实现?
效果如下图2所示。
(注:这是在chandoo.org论坛上看到的一个案例,觉得很好,特整理在此与大家分享。)
A:使用PRODUCT函数和命名公式来解决。
在单元格B2中输入下面的数组公式:
=A2*PRODUCT(1+PriceRises/100)
向下拉至所需单元格。
公式中使用了一个名称PriceRises,即:
名称:PriceRises
引用位置:=OFFSET(Sheet1!$E$2,,,COUNTA(Sheet1!$E:$E)-1,1)
这是一个动态的名称,返回列E中除E1外的含有值的单元格区域,如上图1所示,返回单元格区域E2:E4。如果在列E中添加值,例如在E5中添加值2,则该名称返回E2:E5。这是公式中使用名称的一个好处,当添加值时,名称区域自动扩展,公式也会自动更新。
回到公式:
=A2*PRODUCT(1+PriceRises/100)
对于上图1中的数据,可以解析为:
=A2*PRODUCT(1+{4;5;6}/100)
解析为:
=A2*PRODUCT(1+{0.04;0.05;0.06})
解析为:
=A2*PRODUCT({1.04;1.05;1.06})
这里PRODUCT函数返回1.04×1.05×1.06=1.15752,代入公式得:
=A2*1.15752
结果为:
=100*1.15752
=115.752