在具有相似公式的一系列单元格中,如何使某些值更改为绝对值并保留一些值?

时间:2013-05-27 15:42:24

标签: excel excel-formula excel-2010

这是我的问题:

我有一张超过3MB的Excel表格,我需要一个公式来覆盖表格的所有行,第一行的公式是,例如:=A1/B1

但是有一个问题,我需要B列在第1行和第400行之间重复。因此,第401行是A401/B1,第402行A402/B2,依此类推。

手动我的想法是将$添加到列B中的数字,直到单元格400并且复制连续行中的所有单元格,但我必须在每个单元格上执行此操作直到第400行并且需要花费太多时间(在实际工作表中我需要执行此程序的15个公式)。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

我会使用INDIRECT每次都能更改引用。

=A1/INDIRECT("B"&IF(MOD(ROW(),400)=0,400,MOD(ROW(),400)))

在第1行,MOD(ROW(),400)评估为1,以便我们获得A1/B1

在第400行,MOD(ROW(),400)评估为0,因此IF将值设为400,以便我们获得A400/B400,这仍然是MOD(ROW(),400)好。

在第401行,1评估为A401/B1,以便我们获得{{1}}。

现在,请务必从第1行开始,即使您的评估没有。您可以随时复制/粘贴值,如果需要在其中放置列标题,则可以删除第一行的值。

答案 1 :(得分:0)

如果可以的话,最好避免使用

INDIRECT函数,因为它是一个“易失性”函数 - 这意味着无论何时重新计算工作表,它都会重新计算,即使没有任何相关值发生变化 - 这可能会增加计算时间。

如果你在这里使用INDEX,你可以避免这种开销......你也可以避免对列字母进行“硬编码”,即C1中的这个公式被复制下来

=A1/INDEX(B:B,MOD(ROWS(C$1:C1)-1,400)+1)

请注意,使用ROWS函数而不是ROW允许您在不影响结果的情况下插入上面的行 - 您可以从任何单元格开始只需更改ROWS函数以匹配开头细胞