Excel

配列に格納した値の一部を別の配列へ格納する

一旦配列として格納していた値の一部を配列として利用したい場合の方法です。

参考:値の一括代入と高速処理

配列の例

シート「一覧」のデータを配列に格納します。

シート「一覧」

格納された配列のうち、項目名の1行目のみ別の配列へ格納し、格納された値を別シートへ書き出したい。

別の配列へ

サンプルコード

Sub sample1()
    Dim item() As String
    Dim i As Long, j As Long, k As Long
    
    Dim rng() As Variant: rng = Range("A1").CurrentRegion
    ReDim item(UBound(rng, 2)) As String

    For i = 1 To UBound(item)
        item(i) = rng(1, i)
    Next i
    
    k = 1
    For j = 1 To UBound(item)
      Sheets("出力").Cells(1, j) = item(k)
      k = k + 1
    Next j
End Sub

シート「一覧」の表を配列に格納

5行目の処理です。

   
    Dim rng() As Variant: rng = Range("A1").CurrentRegion

ローカルウィンドウで確認

ローカルウィンドウ

別配列に格納する処理

2行目:変数宣言のときに配列の大きさがわからないため、インディックスを指定しません。

6行目:シート「一覧」のデータを配列「rng」に格納した後に「ReDim」でインディックスを指定します。インディックスは「UBound(rng, 2)」で指定できます。

   
Dim item() As String
ReDim item(UBound(rng, 2)) As String   
配列「item」

8~10行目:別配列「item」に値を格納します。

   
For i = 1 To UBound(item)
   item(i) = rng(1, i)
Next i

12~16行目:配列「item」の値をシート「出力」の1行目に書き出します。

   
k = 1
For j = 1 To UBound(item)
   Sheets("出力").Cells(1, j) = item(k)
   k = k + 1
Next j

-Excel
-

© 2021 オフィスのQ&A