カンマ区切りのデータを縦方向の配列に分割するユーザー定義関数

Excel VBAで縦方向の配列に分割する関数の解説

この記事では、Excel VBAで作成されたユーザー定義関数について解説します。この関数は、セルに入力されたカンマ区切りの文字列を縦方向の配列に分割し、別のセル範囲に表示することができます。関数の使い方や実際の例を交えて説明しますので、初心者の方でも安心してお読みいただけます。

関数のコード

まず、以下の関数コードを見てみましょう。

ここでは関数名を「SplitToVerticalArray」としました。

Function SplitToVerticalArray(inputStr As Range) As Variant
    Dim strArray() As String
    Dim i As Long

    strArray = Split(inputStr.Value, ",")

    ReDim resultArray(1 To UBound(strArray) + 1, 1 To 1) As Variant
    For i = LBound(strArray) To UBound(strArray)
        resultArray(i + 1, 1) = Trim(strArray(i))
    Next i

    SplitToVerticalArray = resultArray
End Function

この関数は、引数としてRangeオブジェクト(入力された文字列があるセル)を受け取り、分割された縦方向の配列を返します。

コードの解説

関数内では、次の手順で処理が行われています。気になる場合だけお読みください。不要ならば次節の「関数の使い方」へお進みください。

  1. 文字列を格納する動的配列 strArray() を宣言します。
  2. 入力セルの値を取得し、カンマ(,)で分割して strArray に格納します。
  3. 結果を格納する 2 次元配列 resultArray を宣言し、そのサイズを調整します。
  4. strArray の各要素を resultArray にコピーします。
  5. 最後に、resultArray を返します。

関数の使い方

このユーザー定義関数を使うには、まずExcelのVBAエディタで新しい標準モジュールを作成し、上記のコードを貼り付けます。その後、Excelのシート上で配列関数として関数を使用することができます。

例えば、セル A1 に「佐藤,山田,田中,星野,佐々木,定岡」のようなカンマ区切りの文字列が入力されているとします。次に、B1 から B6 の範囲を選択し、数式バーに以下の式を入力して、Ctrl + Shift + Enterキーを押してください。

{=SplitToVerticalArray(A1)}

これにより、B1からB6までのセルに、カンマ区切りの文字列が縦方向に分割されて表示されます。

B1: 佐藤
B2: 山田
B3: 田中
B4: 星野
B5: 佐々木
B6: 定岡

この関数を使用することで、簡単にカンマ区切りの文字列を縦方向に分割し、別のセルに表示することができます。特に、名前やリストなどのデータを整形したい場合に便利です。

まとめ

この記事では、Excel VBAで作成されたユーザー定義関数「SplitToVerticalArray」について解説しました。この関数を使用すれば、カンマ区切りの文字列を縦方向の配列に分割して表示することができます。

初心者の方でも、関数のコードや使い方を理解することができたでしょうか。ぜひ、この関数を活用して、Excelでのデータ整形作業を効率化してみてください。

コメント