配列(一次元/二次元)

セル範囲を一次元配列として取得する【ExcelVBA】

セル範囲を1次元配列として取得したい

通常、ワークシート内のセルを取得し配列化すると、二次元配列として処理されます。
※ワークシート自体が二次元配列のため。

ただ、プログラム上は一次元配列で取得、処理したほうが楽な場合があります。

セル範囲を1次元配列として取得するサンプルコード

'■セル範囲を1次元配列として取り込む。
Function Call_RangeTo1DArray(rng As Range) As Variant
    Dim tmp() As Variant
    Dim i As Long: i = 1
    Dim r As Range
    
    For Each r In rng
        '■空白以外を取り込む(列単位で処理後、行単位で処理)
        If r.Value <> "" Then
            ReDim Preserve tmp(1 To i)
            tmp(i) = r.Value
            i = i + 1
        End If
    Next
    Call_RangeTo1DArray = tmp
End Function

使い方

上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。

Public Sub sample()
    Dim arr As Variant
     
    '■1次元配列に格納
    arr = Call_RangeTo1DArray(Range("A1:A5"))
     
End Sub

その他

  • セル範囲が縦のみの場合、上から下へ処理します。
  • セル範囲が横のみの場合、左から右へ処理します。
  • セル範囲が縦横存在する場合、左上から右方向へ処理し、その後下方向に処理を続けます。

関連記事

コメント

タイトルとURLをコピーしました