在一系列具有相似公式的单元格中,如何使某些值更改为绝对值,而某些值仍然可变?

这是我的问题:

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

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

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

我能做什么?

我会用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 ,这依然不错。

在第401行, MOD(ROW(),400)计算为1 ,以便得到A401/B1

现在,即使你没有评价,一定要从第一排开始。 你可以随时复制/粘贴值,如果你需要把列标题或其他东西放在第一行删除值。

如果可以,最好避免使用INDIRECT函数,因为它是一个“易失性”函数 – 意味着即使没有任何相关值发生变化,也可以在重新计算工作表时始终进行重新计算 – 这可能会增加计算时间。

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

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

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