0

我想我会带你思考一下,因为可能有比使用 INDIRECT 更好的方法来达到预期的结果,但如果没有,那么间接的解决方案将非常方便。

我有一个简单的公式

=SUMPRODUCT($E$10:$E20,J10:J20)拖过大量以 CC 结尾的列

但是我发现当我插入一行时,它会将我的 10 和 10 美元更改为 11 和 11 美元,所以我在其中放置了一个间接的。

=SUMPRODUCT(INDIRECT("$E$10:$E20"),INDIRECT("J10:J20"))

我现在意识到我指的是一个字符串,如果我将它拖到右侧,单元格引用将不会更新。

所以最初我的第一个问题是如何更新这些,以便我可以将INDIRECT跨列向右拖动并更新单元格引用,以便我的公式在拖入列 K 时类似于或至少以相同的方式工作很快。

=SUMPRODUCT(INDIRECT("$E$10:$E20"),INDIRECT("K10:K20"))

然而

如果在插入或删除行时有比间接方法更好的解决方案来保留我的原始公式,那也将非常有帮助。

4

1 回答 1

2

当您真的只想保护行名称在行插入时不被更改时,您已经将行和列都转换为静态字符串表示形式。用INDEX 函数替换INDIRECT 函数将允许您使用传统的$使列 E 成为绝对列,并使列 J 保持相对以及对引用的行进行硬编码,这样它们就不会在行插入时发生变化。

=SUMPRODUCT((INDEX($E:$E, 10):INDEX($E:$E, 20)), (INDEX(J:J, 10):INDEX(J:J, 20)))

只是不要插入任何列,一切都应该按计划进行。

在相关说明中,将 "$E$10:$E20" 称为 INDIRECT 中的字符串可能有助于直观地识别其用途,但正如您所指出的,尽管拖动到新位置或插入行,文本不会改变。如果使用 INDIRECT("E10:E20"),则没有区别。

于 2015-06-02T18:34:32.723 回答