配列から空文字を除外する

にメンテナンス済み

VBA を使ってプログラムを作成する際、配列内のデータを操作することがよくあります。配列から空文字のデータを除外する必要がある場合、どのように実現するかをこの記事では解説します。具体的なコード例を用いて、ステップバイステップで紹介していきます。

空文字とは

VBAにおいて空文字とは、文字列が何も含まれていない状態のことを指します。配列内の要素が""であるかどうかを確認することで、その要素が空文字かどうかを判断できます。

空文字を除外するための基本的なアプローチ

配列から空文字を除外する方法として、以下のような手順を取ることが一般的です。

  1. 元の配列をループで巡回し、空文字でない要素をカウントします。
  2. 空文字でない要素の数に基づいて、新しい配列を作成します。
  3. 新しい配列に空文字でない要素をコピーします。

この手順を詳しく見ていきましょう。

コード例:配列から空文字を除外

以下に、VBA を使って上記のステップを実装したコード例を示します。

Public Sub RemoveEmptyStrings()
    Dim originalArray As Variant
    Dim cleanedArray As Variant
    Dim i As Long
    Dim count As Long

    ' 元の配列を定義する
    originalArray = Array("Apple", "", "Banana", "", "Cherry", "Date", "")

    ' 空文字でない要素をカウントする
    count = 0
    For i = LBound(originalArray) To UBound(originalArray)
        If originalArray(i) <> "" Then
            count = count + 1
        End If
    Next i

    ' 空文字を除外した配列を再定義する
    ReDim cleanedArray(0 To count - 1)

    ' 元の配列から空文字でない要素をコピーする
    count = 0
    For i = LBound(originalArray) To UBound(originalArray)
        If originalArray(i) <> "" Then
            cleanedArray(count) = originalArray(i)
            count = count + 1
        End If
    Next i

    ' 結果を出力する
    For i = LBound(cleanedArray) To UBound(cleanedArray)
        Debug.Print cleanedArray(i)
    Next i
End Sub
配列のサイズ変更に注意

VBAでは、配列のサイズを変更する際にReDimを使用しますが、ReDimは配列を再初期化するため、元の配列データが失われます。元のデータを保ったままサイズを変更したい場合はReDim Preserveを使用しますが、この例では新しい配列を作成するためReDimのみで問題ありません。

コードの説明

  1. 元の配列の定義:

    • originalArrayにサンプルのデータを格納しています。この配列には空文字が含まれています。
  2. 空文字でない要素のカウント:

    • 最初のForループで、空文字でない要素の数をカウントします。この数が新しい配列のサイズになります。
  3. 新しい配列の作成:

    • ReDimステートメントを使って、空文字を除外した新しい配列cleanedArrayを定義します。
  4. 空文字でない要素のコピー:

    • 2 回目のForループで、空文字でない要素をcleanedArrayにコピーします。
  5. 結果の出力:

    • 最後に、cleanedArrayの内容をDebug.Printで出力しています。

まとめ

VBA で配列から空文字を除外する方法を紹介しました。 基本的な手順としては、配列をループで巡回し、空文字でない要素を新しい配列にコピーします。 実際のプロジェクトでこの方法を活用して、配列データのクリーンアップを効率的に行いましょう。

#VBA #配列 #空文字 #データ操作