Nie jest to zwykły przypadek, w którym tablica jest zdefiniowana w programie Excel. Jest zdefiniowany w VBA i muszę znaleźć odpowiednią wartość, biorąc pod uwagę wartość znalezioną w komórce w Excelu. W komórce A1 mam wartość DE000C5RQDA9. W B1 chcę wrócić RXM1.

Rzeczywista tablica jest bardziej z (0 do 9, 0 do XX), więc nie myśl, że słownik jest wykonalny. XX zmienia się dynamicznie.

Przykład

 Sub Test()

 Dim arr(0 To 1, 0 To 1)
 arr(0,0) = "RXM1"
 arr(0,1) = "UBM1"
 arr(1,0) = "DE000C5RQDA9"
 arr(1,1) = "DE000C5RQDD3"
 
With Application
   ActiveSheet.Cells(1, 2) = .Index(arr(0), .Match(ActiveSheet.Cells(1,1), arr(1), 0))
End with

 End sub
0
BlackBear 13 kwiecień 2021, 13:22

1 odpowiedź

Najlepsza odpowiedź

Możesz użyć aplikacji.index, aby uzyskać kolumny, które chcesz użyć w indeksie / meczu.

Ten sam pomysł może być używany do wierszy.

Sub Test()
Dim arr(0 To 1, 0 To 1)
Dim col1 As Variant
Dim col2 As Variant

    arr(0, 0) = "RXM1"
    arr(0, 1) = "UBM1"
    arr(1, 0) = "DE000C5RQDA9"
    arr(1, 1) = "DE000C5RQDD3"

    col1 = Application.Index(arr, 1)
    col2 = Application.Index(arr, 2)
    With Application
        ActiveSheet.Cells(1, 2) = .Index(col1, .Match(ActiveSheet.Cells(1, 1), col2))
    End With

End Sub
3
norie 13 kwiecień 2021, 10:47