大体でIT
大体でIT
Excel VBAで、セル範囲を配列に入力して、出力する方法について、ご紹介します。セル範囲の取得すは、RangeとCellsを組み合わせる方法が、便利です。具体的なVBAコードを使いながら解説していきます。
この記事では、セル範囲を配列に入力して、セルに出力する方法について、ご紹介します。
RangeとCellsを組み合わせると、セル範囲を簡単に取得できますので、楽です。
配列をセルに出力するときは、セル範囲を自動で調整する、ResizeとUboundを使う方法が、かなり便利です。
では、セル範囲を配列に入力して、出力する方法について、解説していきます。
- セル範囲を配列に入力する
- 配列をセルに出力する
- セル範囲を転記する
初めに、ポイントとなるVBAコードを記載しておきます。
VBAコードだけ確認したい場合に、ご活用ください。
'配列に入力
a = Range("A1:C4")
a = Range(Cells(1, 1), Cells(4, 3))
a = Range("A1").CurrentRegion
'配列をセルに出力
Range("E1:G4") = a
Range(Cells(1, 5), Cells(4, 7)) = a
Range("E1").Resize(UBound(a, 1), UBound(a, 2)) = a
'セル範囲を転記
Range("E1:G4").Value = Range("A1:C4").Value
セル範囲を配列に入力するには、Rangeを使えばできます。
配列に格納して、データを扱うと、高速に処理できていいです。
その配列へのデータの入力の仕方を見ていきましょう。
セル範囲をRangeを使って、配列に入力するVBAコードです。
Sub TEST1()
'配列に入力
a = Range("A1:C4")
End Sub
取得するデータ
Rangeで取得
セル範囲からデータを取得する際は、RangeとCellsを組み合わせた方が、簡単で楽です。
先ほどのRangeを使う例だと、『"A1:C3"』の形式で入力します。
この入力形式だと、入力を間違えそうですし、変数も入力しづらいです。
セルから、RangeとCellsを組み合わせて、データを取得してみます。
Sub TEST2()
'配列に入力
a = Range(Cells(1, 1), Cells(4, 3))
End Sub
取得したいセル範囲の、左上と右下を、Rangeの中に入力しています。
取得するデータ
RangeとCellsの組み合わせで取得
RangeとCellsを組み合わせた方が、セルのデータを取得しやすいです。
もう一つ、便利な方法で、CurrentRegionを使う方法があります。
セルからCurrentRegionで配列にデータを入力してみます。
Sub TEST3()
'配列に入力
a = Range("A1").CurrentRegion
End Sub
CurrentRegionを使えば、同じ表とみなしたデータを取得することができます。
取得するデータ
CurrentRegionを使う
表全体を取得したいという場合は、CurrentRegionがかなり便利です。
一部のセルデータを取得したい場合は、RangeとCellsの組み合わせを使う、という感じです。
一番簡単に、配列をセルに出力する方法は、Rangeを使う方法です。
Sub TEST4()
'配列に入力
a = Range("A1:C4")
'配列をセルに出力
Range("E1:G4") = a
End Sub
Rangeで出力
配列をセルに出力する方法で、応用が利くのが、RangeとCellsを組み合わる方法です。
セル範囲を配列に入力して、セルに出力するVBAコードです。
Sub TEST5()
'配列に入力
a = Range(Cells(1, 1), Cells(4, 3))
'配列をセルに出力
Range(Cells(1, 5), Cells(4, 7)) = a
End Sub
RangeとCellsを組み合わせて出力
RangeとCellsを使えば、変数の入力も簡単なので、応用が利きます。
配列をセルに出力する場合に、配列の大きさと、出力するセル範囲が同じでないと、出力できません。
出力先のセル範囲が小さい
出力先を小さく入力してしまった場合をやってみます。
Sub TEST6()
'配列に入力
a = Range(Cells(1, 1), Cells(4, 3))
'配列をセルに出力(セル範囲が小さい)
Range(Cells(1, 5), Cells(3, 7)) = a
End Sub
出力先のセル範囲が大きい
先ほどとは反対に、転記先のセル範囲を、大きく入力してしまった場合をやってみます。
Sub TEST7()
'配列に入力
a = Range(Cells(1, 1), Cells(4, 3))
'配列をセルに出力(セル範囲が大きい)
Range(Cells(1, 5), Cells(5, 7)) = a
End Sub
というような感じで、意図したように、セルに出力することができません。
配列を出力する際は、配列の大きさと、出力先のセル範囲を、同じ大きさにしましょう。
ResizeとUboundを使えば、出力先のセルの範囲を、自動で配列の大きさに調整できます。
ResizeとUboundについて、簡単に説明しておきます。
Resizeとは
これで、Rangw("A1:C2")を指定できます。
Uboundとは
例えば、2次元配列で、2行3列のAという配列を使って、次のように入力します。
ResizeとUboundで配列を出力
ResizeとUboundを使って配列をセルに出力するVBAコードです。
Sub TEST8()
'配列に入力
a = Range(Cells(1, 1), Cells(4, 3))
'配列をセルに出力
Range("E1").Resize(UBound(a, 1), UBound(a, 2)) = a
End Sub
Resizeを使って、出力先のセル範囲を、配列と同じ大きさに調整して、出力しています。
この方法を使えば、配列の大きさが変わっても、同じVBAコードで、配列をセルに出力することができます。
セル範囲の値を、転記する方法についてご紹介します。
一番簡単なのが、Rangeを使って転記する方法です。
セル範囲をRangeを使って転記するVBAコードです。
Sub TEST9()
'転記する
Range("E1:G4").Value = Range("A1:C4").Value
End Sub
Rangeで転記
転記するときも、Rangeだけ使うより、RangeとCellsを組み合わせて、使うと便利です。
セル範囲を、RangeとCellsを組み合わせて、転記するVBAコードです。
Sub TEST10()
'転記する
Range(Cells(1, 5), Cells(4, 7)).Value = Range(Cells(1, 1), Cells(4, 3)).Value
End Sub
RangeとCellsを組み合わせて転記
転記する場合も、RangeとCellsを組み合わせると便利です。
Rangeを使って転記する場合は、『Value』をつける必要があります。
Valueなしで転記してみる
Rangeに『Value』をつけないで、転記してみます。転記できません。
Sub TEST11()
'転記してみようとする(Valueがないので転記できません)
Range("E1:G4") = Range("A1:C4")
End Sub
Rangeだけだと『範囲』ということになるので、セルの値を転記できません。
なので、転記する場合は、『Value』をつけて『値を転記する』としましょう。
配列に出力して転記
ちなみに、一度、配列に入力すると、『Value』が必要なくなります。
配列の出力のところで、説明したVBAコードになります。
Sub TEST12()
'配列に入力する
a = Range("A1:C4")
'配列をセルに出力
Range("E1:G4") = a
End Sub
セル範囲を転記する場合は、一度、配列に入力する方が、楽かと思います。
この記事では、セル範囲を配列に入力して、セルへ出力する方法について、ご紹介しました。
配列を取得するには、RangeとCellsを組み合わせて使う方法が、簡単です。
配列をセルに出力するときは、ResizeとUboundを使って、配列を大きさを自動認識する方法が、かなり便利です。
セル範囲を転記する場合は、Valueを付けて、転記元と転記先のセル範囲を同じにしましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。