3

这是我的问题:

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

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

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

我能做些什么?

4

2 回答 2

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,这仍然很好。

在第 401 行,MOD(ROW(),400)计算结果为1,因此我们得到A401/B1

现在,请务必从第 1 行开始,即使您没有进行评估。完成后,您始终可以复制/粘贴值,如果需要在其中放置列标题或其他内容,则删除第一行上的值。

于 2013-05-27T15:53:43.587 回答
0

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

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

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

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

于 2013-05-28T13:26:31.073 回答