Excel / VBA - funkcja dopasowania indeksu za pomocą zakresów dynamicznych

Jak skutecznie korzystać zIndex/Match formuła w VBA?

Tło: Mam arkusz, który w dużej mierze opiera się na wykorzystaniu formuły, która pobiera dane wyjściowe na podstawie dopasowania określonej nazwy do jej zakresu nazw, a także konkretnej daty do zakresu dat.

=INDEX(OutputRange,MATCH(1,(Name=NameRange)*(Date=DateRange),FALSE),1)

Dodatkowo istnieje na stałe kod VBA, który wytwarza to samo wyjście

Sub ExampleHardCode() 
Dim Result As Variant
  Result = Evaluate("INDEX($C$4:$C$13,MATCH(1,($G$6=$A$4:$A$13)*($G8=$B$4:$B$13),FALSE),1)")
  ActiveCell.Value = Result
End Sub

Pytanie: Chciałbym stworzyć funkcję, która zwraca ten sam wynik co powyższe opcje, ale pozwala użytkownikowi (i) wybrać wartości Nazwa i Data poprzez odniesienie do odpowiednich komórek i (ii) wybrać każdy zakres (zakres nazw, zakres dat i zakres wyjściowy). Zasadniczo przy użyciu = przykładowa funkcja (wartość nazwy, zakres nazw, wartość daty, zakres dat, zakres wyjściowy) w programie Excel.

Próbowałem wielu różnych rozwiązań, ale bez powodzenia. Poniżej znajduje się przykład tego, co próbowałem do tej pory, myślę, że istnieje problem z częścią dopasowania, ponieważ nawet gdy próbuję ustawić zakresy (z zakodowanymi zakresami), zwraca błąd.

Function TestIndexMatch1(NameVal As Variant, DateVal As Date)

Dim NameRng As Range
Dim DateRng As Range
Dim OutputRng As Range
Dim Var1 As Variant  'should this be a range or integer?
Dim Result As Variant 

Set NameRng = Range("$A$4:$A$13")
Set DateRng = Range("$B$4:$B$13")
Set OutputRng = Range("$C$4:$D$13")

With Application.WorksheetFunction
    Var1 = .Match(1, (NameVal = NameRng) * (DateVal = DateRng), False)
    Result = .Index(OutputRng, Var1, 1)
End With
End Function

Mam przykładowy skoroszyt, jeśli pomaga mi to dzielić. Nie jestem pewien, czy jest to bardzo przydatne, ale jeśli tak, to naprawdę pomogłoby wielu użytkownikom, którzy nie są wystarczająco zaznajomieni z programem Excel, aby poprawnie używać formuły excel / match excel. Niestety dla mnie moje umiejętności doskonalenia znacznie przekraczają moje umiejętności VBA.

questionAnswers(1)

yourAnswerToTheQuestion