このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】一次元配列をセルに貼付ける時の挙動を解説

2023年1月13日

VBAでは二次元配列をセルに一括貼付けする事ができます。
では、一次元配列を貼付けるとどうなるでしょうか?

分かりますか?

もし、貼付けのためにわざわざ二次元配列にしているのなら、簡略化できるかもしれません。

一次元配列の貼付けはやったことないな、という人はご一読あれ。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

一次元配列は横一列なら貼付けできる

結論から言うと、横一列のセルに貼付けることはできますが、縦一列のセルに貼付けることはできません。

具体的なコードで動作を確認してみましょう。

横一列に貼付ける場合

Sub SideArray()
    Dim sideArr As Variant: sideArr = Array(1, 2, 3, 4, 5)
    Range("A1:E1") = sideArr
End Sub

セルが横一列の場合、このように綺麗に貼付けすることができます。

縦一列に貼付ける場合

Sub VerticalArray()
    Dim VerticalArr As Variant: VerticalArr = Array(1, 2, 3, 4, 5)
    Range("A1:A5") = VerticalArr
End Sub

セルが縦一列の場合は、配列の最初の値がすべてのセルに貼付けされます。

結論

このように一次元配列は横一列のセルならば綺麗に貼付けする事ができます。

ちなみに、これは二次元配列のArr(0, x)を貼りつけた場合と同じ挙動です。
一次元配列は、一次元目が0の二次元配列として扱われています。

縦一列に貼りたいならTranspose関数

縦一列に貼り付けたい、という場合はワークシート関数のTranspose関数を使いましょう。

Sub VerticalArray改()
    Dim VerticalArr As Variant: VerticalArr = Array(1, 2, 3, 4, 5)
    VerticalArr = WorksheetFunction.Transpose(VerticalArr)
    Range("A1:A5") = VerticalArr
End Sub

Transpose関数は行と列を入れ替える関数です。
配列についても縦方向(要素)と横方向(次元)を入れ替えることができます。

Transpose関数を使って配列を入れ替えることで、縦一列のセルにも正しく貼付けることができます。

Tips : 一次元配列は見出しの貼付けに便利

一次元配列はArray関数で簡単に作ることができます。
そのため、私は見出しを貼付けるためによく使っています。

Sub Header()
    Dim headerArr As Variant: headerArr = Array("項目①", "項目②", "項目③", "項目④", "項目⑤")
    Range("A1:E1") = headerArr
End Sub

こんな風にArray関数に各項目名を入れて、一括貼付けしています。

項目名を羅列して書けるし、項目が変更になっても簡単に書き換えられるのでとても便利ですよ。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

created by Rinker
技術評論社
¥3,608 (2024/10/13 14:02:59時点 Amazon調べ-詳細)
VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから