こんにちは。
Excel VBA で別シートの特定列をセル参照させて、あたらしいシートを作成しています。
以下の方法で実現できてはいるのですが、行数が多く且つ20回以上(20列というべき?)も
同じ処理をさせているため、処理が3分近くかかって遅いことを気にしています。
(やりたいこと)
・参照元シート「AAA」の値を変更すれば、参照先シート「BBB」の表も自動的に書き換わるようにしたい。
・AAAシートのデータ行数は各列とも同じだが、何行あるかは不定。
・参照元、参照先の列関係(下の例で言えばAAAシートB列をBBBシートC列に、AAAシートY列をBBBシートD列に対応させる)は固定。
(現在のコード)
参照元シート「AAA」のB3~B5003のセル番地を、参照先シート「BBB」のC11~C5011に設定。
同様に、参照元シート「AAA」のY3~Y5003のセル番地を、参照先シート「BBB」のD11~D5011に設定。
同様に…(これを約20列分行なう)
Dim maxRow As Long, n as Long
maxRow = 5003 ' 実際には関数を使って取得します。
For n = 3 To maxRow
' AAAシートB3~B5003 → BBBシートC11~C5011
Cells(8 + n, 3).Formula = "=AAA!B" + n
' AAAシートY3~Y5003 → BBBシートD11~D5011
Cells(8 + n, 4).Formula = "=AAA!Y" + n
' :
' 以下同様の処理がおよそ20列続きます。
Next n
値コピーではなく参照式を一括で埋め込む方法や、別の手段で参照式の設定を高速化させる
うまい方法をご存知の方、ご教授いただけませんでしょうか。
お礼
参照式もRange関数で設定できるのですね!大変助かりました。 ありがとうございました。