这是我的问题:
我有一张超过3MB的Excel表格,我需要一个公式来覆盖表格的所有行,第一行的公式是,例如:=A1/B1
。
但是有一个问题,我需要B列在第1行和第400行之间重复。因此,第401行是A401/B1
,第402行A402/B2
,依此类推。
手动我的想法是将$
添加到列B
中的数字,直到单元格400并且复制连续行中的所有单元格,但我必须在每个单元格上执行此操作直到第400行并且需要花费太多时间(在实际工作表中我需要执行此程序的15个公式)。
我该怎么办?
答案 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
函数以匹配开头细胞