Excel 在一系列具有类似公式的单元格中,如何使某些值变为绝对值,而某些值保持可变?

Excel 在一系列具有类似公式的单元格中,如何使某些值变为绝对值,而某些值保持可变?,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,我的问题是: 我在excel中有一张超过3MB的工作表,我需要一个公式来覆盖工作表的所有行,第一行的公式是,例如:=A1/B1 但有一个陷阱,我需要B列在第1行和第400行之间不断重复。因此,第401行将是A401/B1,第402行A402/B2,依此类推 手动操作我的想法是将$添加到B列的数字中,直到单元格400,然后复制粘贴连续行中的所有单元格,但我必须在每一个单元格上执行此操作,直到第400行,这需要花费太多时间(在实际工作表中,我需要执行此过程的公式有15个) 我能做什么?我会使用间接每

我的问题是:

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

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

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


我能做什么?

我会使用
间接
每次都能更改引用

=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行开始,即使您的评估没有。完成后,您始终可以复制/粘贴值,如果需要将列标题或其他内容放在第一行上,则可以删除第一行上的值。

如果可以,最好避免使用间接
函数,因为它是一个“易失性”函数,意味着每当重新计算工作表时,它都会重新计算,即使所有从属值均未更改,也会增加计算时间

如果您在这里使用
索引
,您可以避免这种开销……而且您还可以避免对列字母进行“硬编码”,即复制C1中的公式

=A1/索引(B:B,MOD(行(C$1:C1)-1400)+1)


请注意,使用
函数代替
可以在不影响结果的情况下插入上面的行-您可以从任何单元格开始,只需更改
函数以匹配开始单元格

很好的答案。我会使用int()函数,而不是“if”和“mod”,使其更加紧凑:=A1/间接(“B”&int((ROW()-1)/400)+1)实际上,即使我不从第1行开始,通过对ROW()函数进行加减,您的解决方案也可以工作。我通常不在公式中使用算术,但你证明它非常有用,我会开始使用它@user2425509我就这样做了这个公式,并在其他地方考虑另一个公式,所以是的^ ^;很高兴看到你可以根据自己的需要调整它:)@Gerrat这真的有效吗?对于第1行,没有什么错,对于第2行,我们得到
INT((row()-1)/400)+1
再次求值为1,我们期望的是2。啊,我想我误读了他的问题…他想让B1重复400次,然后是B2,等等。