我在 Excel 2016 中有多组公式:
=CLASSSTRUCTURE!B43
=CLASSSTRUCTURE!B43
=CLASSSTRUCTURE!B43
=CLASSSTRUCTURE!B43
=CLASSSTRUCTURE!B44
=CLASSSTRUCTURE!B44
=CLASSSTRUCTURE!B44
=CLASSSTRUCTURE!B44
=CLASSSTRUCTURE!B45
=CLASSSTRUCTURE!B45
=CLASSSTRUCTURE!B45
=CLASSSTRUCTURE!B45
每组重复四次公式。
我想自动填充接下来的四行(依此类推):
...
=CLASSSTRUCTURE!B46
=CLASSSTRUCTURE!B46
=CLASSSTRUCTURE!B46
=CLASSSTRUCTURE!B46
有没有办法做到这一点?
答案1
通常的方法是使用 INDEX() 函数,该函数允许您通过提供行号和列号来查找单元格范围内的单元格。
使用如下方法:
=INDEX($A$1:$A$100, INT((ROW($A1)-ROW($A$1))/4)+1)
在哪里
$A$1:$A$100 是您所引用的单元格范围(它可以向下到您希望的任何范围)。
ROW() 给出它所引用单元格的行号,因此 ROW($A1)-ROW($A$1) 给出从我们要填充的第一个单元格往下的单元格数。(注意 $)
将其除以 4 并向下舍入,我们便会得到要从中获取数据的单元格的行号。您可以根据需要将此公式复制到页面下方。
可以以类似的方式使用“OFFSET”或“INDIRECT”函数,但它们会使您的电子表格速度变慢,因为它们都是“易失性”函数,无法利用 Excel 对计算过程的智能优化。
优化:
我们可以减少“INDEX”的使用次数,因为每 4 个单元格中就有 3 个与上面的单元格相同。因此我们使用:
Cell Formula
C1 =INDEX($A$1:$A$100, INT((ROW($A1)-ROW($A$1))/4)+1)
C2 =C1
C3 =C2
C4 =C3
C5 =INDEX($A$1:$A$100, INT((ROW($A1)-ROW($A$1))/4)+1)
C6 =C5
C7 ...
只要您以 4 行为单位进行复制粘贴,仍然可以将其复制粘贴到工作表中。