Pasujące wartości w tablicy łańcuchów

Problem: Szukanie bardziej efektywnego sposobu na ustalenie, czy w tablicy 1d istnieje dokładna wartość dopasowania - zasadniczo logicznatrue/false.

Czy przeoczę coś oczywistego? Czy po prostu używam niewłaściwej struktury danych, używając tablicy, gdy prawdopodobnie powinienem używać obiektu kolekcji lub słownika? W tym drugim mogłem sprawdzić.Contains lub.Exists odpowiednio

W Excelu mogę sprawdzić wartość w tablicy wektorowej, takiej jak:

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

Zwraca dokładny indeks dopasowania, oczywiście z zastrzeżeniem ograniczeńMatch funkcja, która znajduje tylkopierwszy dopasowywanie wartości w tym kontekście. Jest to powszechnie stosowana metoda, z której korzystam od dłuższego czasu.

Jest to wystarczające rozwiązanie dla programu Excel - ale co z innymi aplikacjami?

W innych aplikacjach mogę zrobić zasadniczo to samo, ale wymaga włączenia odwołania do biblioteki obiektów programu Excel, a następnie:

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

Wydaje się to jednak głupie i trudne do zarządzania w plikach rozproszonych z powodu uprawnień / centrum zaufania / etc.

Próbowałem użyćFiltr() funkcjonować:

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

Ale problem z tym podejściem jest takiFilter zwraca tablicę dopasowań częściowych, a nie tablicę dokładnych dopasowań. (Nie mam pojęcia, dlaczego byłoby użyteczne zwrócenie podciągów / częściowych dopasowań).

Inną alternatywą jest dosłownie iterowanie każdej wartości w tablicy (co, jak sądzę, jest również powszechnie używane) - co wydaje się jeszcze bardziej niepotrzebnie kłopotliwe niż wywołanie programu ExcelMatch funkcjonować.

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

questionAnswers(3)

yourAnswerToTheQuestion