Coincidencia de valores en la cadena de cadenas

Problema: buscar una forma más eficiente de encontrar si hay un valor coincidente exacto en una matriz 1d, esencialmente un booleanotrue/false.

¿Estoy pasando por alto algo obvio? ¿O simplemente estoy usando la estructura de datos incorrecta, usando una matriz cuando probablemente debería usar un objeto de colección o un diccionario? En este último pude comprobar la.Contains o.Exists método, respectivamente

En Excel puedo verificar un valor en una matriz vectorial como:

If Not IsError(Application.Match(strSearch, varToSearch, False)) Then
' Do stuff
End If

Esto devuelve un índice de coincidencia exacta, obviamente sujeto a limitaciones deMatch función que solo encuentra laprimero valor coincidente en este contexto. Este es un método comúnmente usado, y también lo he estado usando durante mucho tiempo.

Esto es lo suficientemente satisfactorio para Excel, pero ¿qué pasa con otras aplicaciones?

En otras aplicaciones, puedo hacer básicamente lo mismo pero requiere habilitar la referencia a la biblioteca de objetos de Excel y luego:

   If Not IsError(Excel.Application.match(...))

Sin embargo, eso parece una tontería y es difícil de administrar en archivos distribuidos debido a los permisos / trust center / etc.

He tratado de usar elFiltrar() función:

 If Not Ubound(Filter(varToSearch, strSearch)) = -1 Then
    'do stuff
 End If

Pero el problema con este enfoque es queFilter devuelve una matriz de coincidencias parciales, en lugar de una matriz de coincidencias exactas. (No tengo idea de por qué sería útil devolver subcadenas / coincidencias parciales.)

La otra alternativa es literalmente iterar sobre cada valor de la matriz (esto también es muy comúnmente usado, creo), lo que parece aún más innecesariamente engorroso que recurrir a Excel.Match función.

For each v in vArray
   If v = strSearch Then
    ' do stuff
   End If
Next

Respuestas a la pregunta(3)

Su respuesta a la pregunta