大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、セル範囲を配列に入力して、出力する方法について、ご紹介します。セル範囲の取得すは、RangeとCellsを組み合わせる方法が、便利です。具体的なVBAコードを使いながら解説していきます。

はじめに

この記事では、セル範囲を配列に入力して、セルに出力する方法について、ご紹介します。

RangeとCellsを組み合わせると、セル範囲を簡単に取得できますので、楽です。

配列をセルに出力するときは、セル範囲を自動で調整する、ResizeとUboundを使う方法が、かなり便利です。

では、セル範囲を配列に入力して、出力する方法について、解説していきます。

この記事で紹介すること

  • セル範囲を配列に入力する
  • 配列をセルに出力する
  • セル範囲を転記する

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなる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

では、解説していきます。

VBAでセル範囲を配列に入力

セル範囲を配列に入力するには、Rangeを使えばできます。

配列に格納して、データを扱うと、高速に処理できていいです。

その配列へのデータの入力の仕方を見ていきましょう。

Rangeで配列に入力

簡単なのが、Rangeで配列に入力する方法です。

セル範囲をRangeを使って、配列に入力するVBAコードです。

Sub TEST1()
    
    '配列に入力
    a = Range("A1:C4")
    
End Sub

こちらのセルデータを取得してみます。

取得するデータ

取得するデータ

実行してみます。

Rangeで取得

Rangeを使って、配列にセルデータを入力

配列にデータを入力することができました。

RangeとCellsの組み合わせ

セル範囲からデータを取得する際は、RangeとCellsを組み合わせた方が、簡単で楽です。

先ほどのRangeを使う例だと、『"A1:C3"』の形式で入力します。

この入力形式だと、入力を間違えそうですし、変数も入力しづらいです。

セルから、RangeとCellsを組み合わせて、データを取得してみます。

Sub TEST2()
    
    '配列に入力
    a = Range(Cells(1, 1), Cells(4, 3))
    
End Sub

取得したいセル範囲の、左上と右下を、Rangeの中に入力しています。

  • Range(左上, 右下)

という感じです。

こちらのセルデータを取得してみます。

取得するデータ

取得するデータ

実行してみます。

RangeとCellsの組み合わせで取得

セルからRangeとCellsを組み合わせて配列にデータを入力した結果

セルから配列にデータを入力することができました。

RangeとCellsを組み合わせた方が、セルのデータを取得しやすいです。

CurrentRegionを使う

もう一つ、便利な方法で、CurrentRegionを使う方法があります。

セルからCurrentRegionで配列にデータを入力してみます。

Sub TEST3()
    
    '配列に入力
    a = Range("A1").CurrentRegion
    
End Sub

CurrentRegionを使えば、同じ表とみなしたデータを取得することができます。

こちらのセルデータを取得してみます。

取得するデータ

取得するデータ

実行してみます。

CurrentRegionを使う

CurrentRegionを使ってセルのデータを配列に入力した結果

セルのデータを配列に入力できました。

CurrentRegionかなり便利です。

表全体を取得したいという場合は、CurrentRegionがかなり便利です。

一部のセルデータを取得したい場合は、RangeとCellsの組み合わせを使う、という感じです。

VBAで配列をセル範囲に出力

配列をセルに出力する方法を紹介します。

Rangeを使って出力

一番簡単に、配列をセルに出力する方法は、Rangeを使う方法です。

Rangeを使って、配列をセルに出力してみます。

Sub TEST4()
    
    '配列に入力
    a = Range("A1:C4")
    
    '配列をセルに出力
    Range("E1:G4") = a
    
End Sub

実行してみます。

Rangeで出力

Rangeで配列を出力した結果

配列を出力できました。

RangeとCellsを組み合わせて出力

配列をセルに出力する方法で、応用が利くのが、RangeとCellsを組み合わる方法です。

セル範囲を配列に入力して、セルに出力するVBAコードです。

Sub TEST5()
    
    '配列に入力
    a = Range(Cells(1, 1), Cells(4, 3))
    
    '配列をセルに出力
    Range(Cells(1, 5), Cells(4, 7)) = a
    
End Sub

セル範囲は、次のように入力します。

  • Range(左上, 右下)

実行してみます。

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

実行してみます。

出力先のセル範囲を大きくしてしまった場合

『#N/A』がでてきました。

というような感じで、意図したように、セルに出力することができません。

配列を出力する際は、配列の大きさと、出力先のセル範囲を、同じ大きさにしましょう。

ResizeとUboundを使って出力

ResizeとUboundを使えば、出力先のセルの範囲を、自動で配列の大きさに調整できます。

配列をセルに出力する際に使うと、かなり便利です。

ResizeとUboundについて、簡単に説明しておきます。

Resizeとは

セル範囲を変更することができます。

  • Range("A1").Resize(2,3)

これで、Rangw("A1:C2")を指定できます。

Uboundとは

配列の大きさを取得できます。

例えば、2次元配列で、2行3列のAという配列を使って、次のように入力します。

  • Ubound(A, 1)

1次元目の大きさ=2を取得できます。

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を使って、出力先のセル範囲を、配列と同じ大きさに調整して、出力しています。

実行してみます。

ResizeとUboundを使って、配列をセルへ出力した結果

セルに配列を出力できました。

この方法を使えば、配列の大きさが変わっても、同じVBAコードで、配列をセルに出力することができます。

便利ですね。

VBAでセル範囲の値を転記

セル範囲の値を、転記する方法についてご紹介します。

Rangeで転記

一番簡単なのが、Rangeを使って転記する方法です。

ちょっとやってみます。

セル範囲をRangeを使って転記するVBAコードです。

Sub TEST9()
    
    '転記する
    Range("E1:G4").Value = Range("A1:C4").Value
        
End Sub

実行してみます。

Rangeで転記

セル範囲をRangeを使って転記した結果

セル範囲をRangeを使って、転記できました。

RangeとCellsの組み合わせで転記

転記するときも、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とCellsを組み合わせて転記した結果

セルの値を、転記することができました。

転記する場合も、RangeとCellsを組み合わせると便利です。

Valueをつけないと転記できない

Rangeを使って転記する場合は、『Value』をつける必要があります。

Valueなしで転記してみる

Rangeに『Value』をつけないで、転記してみます。転記できません。

Sub TEST11()
    
    '転記してみようとする(Valueがないので転記できません)
    Range("E1:G4") = Range("A1:C4")
        
End Sub

『Value』をつけていません。

実行してみます。

Valueを付けずに転記した場合

結果は、『変化なし』です。

Rangeだけだと『範囲』ということになるので、セルの値を転記できません。

なので、転記する場合は、『Value』をつけて『値を転記する』としましょう。

配列に出力して転記

ちなみに、一度、配列に入力すると、『Value』が必要なくなります。

配列の出力のところで、説明したVBAコードになります。

Sub TEST12()
    
    '配列に入力する
    a = Range("A1:C4")
    
    '配列をセルに出力
    Range("E1:G4") = a
        
End Sub

実行してみます。

Valueを付けずにセル範囲を配列に入力してセル範囲に出力した結果

セルを『Value』を付けずに転記ができます。

セル範囲を転記する場合は、一度、配列に入力する方が、楽かと思います。

おわりに

この記事では、セル範囲を配列に入力して、セルへ出力する方法について、ご紹介しました。

配列を取得するには、RangeとCellsを組み合わせて使う方法が、簡単です。

配列をセルに出力するときは、ResizeとUboundを使って、配列を大きさを自動認識する方法が、かなり便利です。

セル範囲を転記する場合は、Valueを付けて、転記元と転記先のセル範囲を同じにしましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す