Excel 在一系列具有类似公式的单元格中,如何使某些值变为绝对值,而某些值保持可变?
我的问题是: 我在excel中有一张超过3MB的工作表,我需要一个公式来覆盖工作表的所有行,第一行的公式是,例如: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个) 我能做什么?我会使用间接每
=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,等等。