配列(一次元/二次元)

配列から空白(Empty)を削除する【ExcelVBA】

セルを配列に取り込んだ際、空白が入り込んでしまった場合など、
空白を削除したい場合があります。
除去したいものがEmptyもしくは空文字列の場合は以下のコードで取り除くことが可能です。

配列から空白を除去するサンプルコード

isEmptyと””(空文字列)以外をtemp配列に入れ込み、その配列を元の配列に戻します。

'■配列からEmptyと空文字列("")を削除する
Public Function Call_Array_DeleteEmpty(arr As Variant)
     Dim i As Long
     Dim temp As Variant
     Dim tRow As Variant
     
     ReDim temp(UBound(arr))
     
     For Each tRow In arr
        '■tRowが空白以外であれば、temp配列に格納する
        If Not IsEmpty(tRow) Then
            If tRow <> "" Then
                temp(i) = tRow
                i = i + 1
            End If
        End If
     Next
     '■tempを空白を除いた分で再定義
     ReDim Preserve temp(i - 1)
     Call_Array_DeleteEmpty = temp
End Function

以下のように使用します。

Public Sub test()
    Dim arr As Variant
    arr = Array("東京都", "愛知県", "", "大阪府")
    
    arr = Call_Array_DeleteEmpty(arr)
    '配列が以下のようになる
    '"東京都"、"愛知県"、"大阪府"
          
End Sub

その他

  • 上記は一次元配列をこちらで作成し、空文字列(””)を削除しました。
  • ワークシート内のセルを以下の記事のよう代入した1列の2次元配列も対応可能です。
    配列にセル範囲を格納/動的配列をセルに貼付【ExcelVBA】
    例)
    arr = Range(“A1:A5”)
  • 通常の二次元配列(複数列)がある場合はエラーが発生します。

関連記事

一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列の宣言(静的/動的/1次元/2次元)【ExcelVBA】

コメント

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