Valeurs correspondantes dans le tableau de chaînes

Problème: à la Recherche d'un moyen plus efficace de trouver s'il existe une correspondance exacte de la valeur dans un tableau 1d-essentiellement de l'un booléen true/false.

Suis-je surplombant quelque chose d'évident? Ou suis-je simplement à l'aide de la mauvaise structure de données, en utilisant un tableau quand je devrais probablement être l'aide d'un objet de collection ou d'un dictionnaire? Dans ce dernier j'ai pu vérifier la .Contains ou .Exists méthode, respectivement

Dans Excel que je puisse vérifier une valeur dans un tableau de vecteurs comme:

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

Cela renvoie une correspondance exacte de l'indice, évidemment soumis à des limitations d' Match fonction qui ne trouve que le première valeur correspondante dans ce contexte. C'est une méthode couramment utilisée, et celui que j'ai utilisé pendant un long moment, trop.

C'est assez satisfaisante pour Excel-mais quelles autres applications?

Dans d'autres applications, je peux faire quasiment la même chose, mais nécessite l'activation de référence à la bibliothèque d'objet Excel, et ensuite:

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

Qui semble idiote, bien, et est très difficile à gérer sur les fichiers distribués à cause des autorisations/trust center/etc.

J'ai essayé d'utiliser le Filtre() fonction:

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

Mais le problème avec cette approche est que Filter retourne un tableau de correspondances partielles, plutôt qu'un tableau de correspondances exactes. (Je n'ai aucune idée de pourquoi il serait utile de revenir sous-chaîne/les correspondances partielles.)

L'autre alternative est littéralement itérer sur chaque valeur dans le tableau (ce qui est aussi très couramment utilisé, je pense) -- ce qui semble encore plus inutilement lourd que d'appeler sur Excel Match fonction.

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

source d'informationauteur David Zemens