この記事では、VBA上で作成した配列を指定した領域(セル)に一括記入する方法をご紹介していきます。
出力する領域や配列の大きさを変更し、いくつかのパターンに分けて実行していきますので、それぞれのやり方で結果がどのように変わるのかを見ていきましょう。
それではさっそくやっていきます。
事前準備:配列変数を作成する
配列データをセルに出力するうえで、まずは配列を作成しなければ話になりません。
というわけで今回は以下のセルデータを配列化しておきます。
(シンプルな7行、2列の配列です。)
このデータをVBA上で配列変数にするには以下のコードを実行します。
(今回は適当にaaaという変数にしておきます。)
Sub test()
Dim aaa As Variant
aaa = Range("A1:B7")
End Sub
はい、これだけです。
これでaaaという変数の中に7行、2列の配列が格納されていることになります。
以降はこの配列データを別のセルに一括記入する方法をご紹介していきます。
配列データをセルに出力:配列サイズ=出力領域サイズの場合
まずはシンプルに配列の領域サイズと同じサイズの領域を出力先のセルに指定した場合で実行しみましょう。
以下がそのサンプルコードです。
Sub test()
Dim aaa As Variant
aaa = Range("A1:B7")
Range("D1:E7") = aaa
End Sub
こいつを実行してみましょう。
〇実行前のシート
〇実行後のシート
問題なく配列化したデータがVBA上で指定した領域に一括出力されていますね。
配列データをセルに出力:配列サイズ>出力領域サイズの場合
次は以下のようなコードに書き換えて実行してみましょう。
Sub test()
Dim aaa As Variant
aaa = Range("A1:B7")
Range("D1:E4") = aaa
End Sub
配列サイズは7行、2列なのに対して、4行目の出力先の領域サイズは4行、2列になっています。
この場合は問題なく出力されるのでしょうか?
実際に実行してみましょう。
以下がその実行結果です。
〇実行前
〇実行後
この場合は出力先として指定した領域の中は、配列内の対応する場所が出力されていますが、それ以外の場所は何も変化がありません。
出力先がない場合は勝手に無視してくれるというわけですね。
配列データをセルに出力:配列サイズ<出力領域サイズの場合
次は先ほどの逆バージョンです。
以下のコードを実行してみましょう。
Sub test()
Dim aaa As Variant
aaa = Range("A1:B7")
Range("D1:E10") = aaa
End Sub
以下がその実行結果です。
〇実行前
〇実行後
この場合は出力先として指定した領域の方が大きいので途中で配列データが足りなくなります。
そのため余った部分は#N/A(ノー・アサイン)が出力されます。
勝手に先頭に戻って繰り返されるとかではないので安心ですね。
おわりに
というわけで今回は配列データをセルに一括出力する方法をご紹介しました。
データ整理などをしていると頻繁に出くわす場面ですので、ぜひ使いこなせるようにしておきましょう。
こういったシチュエーションに限らず、配列を使いこなせるといろいろとメリットがあります。
ぜひマスターしておきましょう。
以下に参考になりそうな記事を載せておきますので興味があればご覧ください。
【エクセルVBA】一つの変数に複数データを代入!配列の概念を詳細解説!
【VBA】配列データをテキストファイルに表形式で出力する方法!
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント