PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやデータ分析などもやっています。

配列の要素に特定の文字列があるか調べてみよう!【VBA・エクセルマクロ】

配列の要素に特定の文字列があるか?

今回は、配列の中に特定の文字列が存在するか、
調べる方法について考えてみたいと思います。

Javaであれば、いわゆるindexOfメソッドを使用する
ことで、解決するのですが・・・

VBAでは、満足いく結果が得られなかったので、
自分なりに考えてみます。

ポイントは2つ

  1. indexOf関数を独自に作成する。
  2. 要素が存在すれば添え字を返す。

Subプロシージャ

Sub ArrayindexOf()

Dim myArray As Variant

    myArray = Split("あ,い,う,あ,え,あ,お,あ,え,あ,お", ",")
    
    'myArrayの中に "あ" が存在すれば添え字を返す。
    For Each Buffer In indexOf(myArray, "あ")
    
        Debug.Print Buffer
    
    Next Buffer
    
End Sub

Function(関数)

Function indexOf(TargetArray, Element)

    ReDim TempArray(0) As Variant
    
        For i = 0 To UBound(TargetArray)
            
            If TargetArray(i) = Element Then

                n = UBound(TempArray)
                TempArray(n) = i
                ReDim Preserve TempArray(n + 1)
                n = n + 1

            End If
        
        Next i
    
    indexOf = TempArray

End Function