Excel公式中的范围在插入移位后发生变化,如何才能停止更改?

时间:2016-01-15 14:29:55

标签: excel vba excel-vba excel-formula

我在这样的Excel单元格中有一个Excel 2010公式(公式位于T列中):

=SUMIF($B$14:$B$44335;$T8;$E$14:$E$44335)

此公式执行此操作:它会在Range("B14:B44335")中找到值为Range("T8")的单元格(例如,在Range("B192:B370")之间),然后汇总列中的值E(例如,Range("E192:E370")之间的总和。

该公式运行正常,但后台VBA代码存在问题。此VBA代码有时会延长或缩短Range("B14:E44335")。 VBA代码使用insert shift:=xlDowndelete shift:=xlUp来扩展或缩短。

在VBA中插入移位(插入178行)会导致公式改变如下:

=SUMIF($B$192:$B$43623;$T8;$E$192:$E$43623)

因此公式也从B14转移到B192

这很奇怪,因为公式在T列中,而VBA代码与T列无关。

我尝试为该范围命名,例如,当我写Countries时,Excel会选择Range("B14:E44335"),所以

=SUMIF(Countries;$T8;$E$14:$E$44335)

但我又遇到了同样的问题。在Insert Shift之后,Countries显示Range(B192:B43623")

无论如何,无论在其他细胞中发生什么,我怎样才能使我的配方范围永久保持?

1 个答案:

答案 0 :(得分:2)

试试这个:

  =SUMIF(offset($b$1,13,0,44321, 1), $t8, offset($e$1,13,0,44321))

这使用OFFSET来创建固定范围:14到44335 ..如果它应该是一个固定的范围,你应该是金色的。 如果没有,你需要找出一些公式/逻辑来计算13和44321 ..;)

出于Scott在上述评论中提到的原因,Excel正在调整您的范围,偏移绕过;)