Excel: 数式の連続グループを自動入力する

Excel: 数式の連続グループを自動入力する

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

各グループで式が 4 回繰り返されます。

次の 4 行を自動入力したいと思います (以下同様)。

...
=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 の計算プロセスのスマートな最適化を利用できない「不安定な」関数であるため、スプレッドシートの速度が大幅に低下します。


最適化:

4 つのセルのうち 3 つは上記のものと同じなので、「INDEX」の使用回数を減らすことができます。そのため、次の式を使用します。

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 行のブロック単位でのみコピーしてシートに貼り付けることができます。

関連情報