Często napotykam sytuacje, w których piszę bardzo podobne, ale szczegółowe formuły, które używają tego samego zakresu, co argument dla wielu funkcji.
Jako prosty przykład rozważ:
=(A+B)/B
Czy istnieje prosty sposób, aby utworzyć UDF, taki jak:
=PCTCHANGE(A,B)
Czy to może wykonać dokładnie takie same obliczenia jak powyżej? Zdaję sobie sprawę, że z prostymi operatorami arytmetycznymi jest to banalne, ale czy istnieje prosty sposób na zawinięcie czegoś bardziej złożonego w jedną łatwą funkcję?
=IF(""=$U30,"",G30/IF(ROW(G30)-MONTH(U30)<ROW(K$8),G$5,OFFSET(G30,-MONTH(U30),0))-1)
Chciałbym uniknąć tłumaczenia formuły na wywołania Application.WorksheetFunction. Zakładam, że Application.Evaluate jest prawdopodobnie częścią rozwiązania, ale nie mogę wymyślić, jak przekazywać do niego zakresy za pośrednictwem UDF.
Odpowiedzi:
Musisz otworzyć VBA i utworzyć UDF z modułu.
Wpisz ALT-F11, aby otworzyć edytor VBA. W ramach swojego projektu kliknij prawym przyciskiem myszy i wybierz Wstaw - & gt; Moduł
Wpisz następujące polecenie w oknie edytora VBA
Gdy dzwonisz do funkcji, rób to, co normalnie robisz. W dowolnym typie komórki PctChange (CellA, Cell B).
źródło