セル範囲を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
その他
- セル範囲が縦のみの場合、上から下へ処理します。
- セル範囲が横のみの場合、左から右へ処理します。
- セル範囲が縦横存在する場合、左上から右方向へ処理し、その後下方向に処理を続けます。
コメント