poniedziałek, 31 marca 2014

Funkcje arkuszowe w pracy z tablicami Array (2/2)

Kontynuując zagadnienie dot. funkcji arkuszowych w pracy z tablicami chciałbym wspomnieć jeszcze o funkcji Match (PODAJ.POZYCJĘ). Funkcja ta zwraca informację, na której pozycji znajduje się szukany element w jednowymiarowej tablicy danych. Ogólna konstrukcja funkcji jest następująca

1=Match(SzukanaWartość, Tablica, ParametrKontrolny)

Wykorzystując tablicę danych z kursami NBP z poprzedniego postu oraz przyjmując identyczny mechanizm działania procedury poniższy kod zwróci numer wiersza, w którym znajduje się szukany symbol waluty.

01Sub Rozwiązanie_MA()
02 
03    Dim Szukana As Variant
04        Szukana = InputBox("wartość szukana")
05 
06    'tablica Array pochodząca z zaznaczenia obszaru komórek
07    Dim TBL As Range
08    Set TBL = Application.InputBox("zaznacz obszar", Type:=8)
09    
10    'wariant A- tylko Match
11    MsgBox WorksheetFunction.Match(Szukana, TBL.Columns(1), 0)
12        
13End Sub

Okno wynikowe dla waluty EUR.


I na koniec ważna wskazówka. Kombinacja funkcji Index oraz Match w praktyce pozwalają na stworzenie innej wersji funkcji VLookup (WYSZUKAJ.PIONOWO).  W naszym przykładzie, chcąc uzyskać kurs waluty dla wskazanego symbolu z wykorzystaniem takiej kombinacji należałoby wewnątrz procedury zastosować poniższą instrukcję. A wynik jej działania zaprezentowano w kolejnym oknie MsgBox.

1'wariant B- Match + Index = VLookUp
2MsgBox WorksheetFunction.Index(TBL.Columns(4), _
3            WorksheetFunction.Match(Szukana, _
4                    TBL.Columns(1), 0))


Brak komentarzy:

Prześlij komentarz