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