我在 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 行區塊中執行此操作,仍然可以將其複製並貼上到工作表中。