Funkcja DanePodWarunkiem   strona główna:
A po co ten Excel ;-)
 
Mamy tabelę z danymi i chcemy ją "wyfiltrować" tzn. zwrócić te wiersze tabeli danych które spełniają określony warunek.  
 
Function DanePodWarunkiem(tblDane As Variant, vWarunki As Variant) As Variant  
    Dim tbl As Variant, i As Long, j As Integer  
    Dim tblWyniki() As Variant, w As Long, k As Integer  
 
    tbl = tblDane: k = UBound(tbl, 2)  
    For i = 1 To UBound(tbl, 1)  
        If vWarunki(i, 1) Then  
            w = w + 1  
            ReDim Preserve tblWyniki(1 To k, 1 To w)  
            For j = 1 To k  
                tblWyniki(j, w) = tbl(i, j)  
            Next  
        End If  
    Next  
    If w > 0 Then  
        tblWyniki = Transponuj2(tblWyniki)   Funkcja Transponuj2
 
        DefiniowanieZawartosciZakresuPozaTablica tblWyniki, _   Procedura DefiniowanieZawartosciZakresuPozaTablica
                                                 Application.Caller.Rows.Count, _  
                                                 Application.Caller.Columns.Count  
        DanePodWarunkiem = tblWyniki  
    End If  
End Function  
 
Funkcja ta to funkcja tablicowa zwracająca wyniki do zakresu komórek, poza tym jej arg. vWarunki to również tablica warunków,  
do której musi trafić tablica z wartościami PRAWDA/FAŁSZ. Jak wprowadzić do tego argumentu taką tablicę warunków?   
Taką tablicą może być np. takie wyrażenie A1:A10="test". Wprowadzone tablicowo zwróci tablicę wartości PRAWA/FAŁSZ będące  
wynikiem porównania każdej wartości z zakresu A1:A10 z tekstem "test".   
Warunki te mogą być dużo bardziej skomplikowane: np.: (A1:A10>ŚREDNIA(A1:A10))*(B1:B10="Firma1")) ale o tym przy innej    link do przykładu
okazji :-)  
    Tablica wyników jest tworzona z tych wierszy dla których dany warunek z vWarunki to PRAWDA.  
Wyniki takiej funkcji należy transponować co jest konsekwencją dynamicznego rozszerzania tablicy.  
Wykorzystano również procedurę określającą wartość elementów tablicy poza wynikami zwracanymi przez funkcję.