Excel - Tworzenie UDF ze wzoru

0

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.

Ryan
źródło
Byłoby bardzo pomocne, aby zobaczyć UDF, który już próbowałeś lub z którym pracujesz.
CharlieRB
Czy możesz edytować swoją drugą formułę, aby wyświetlić pełne odwołania bezwzględne / względne? Czy G30 może być G30 $ jak U30? Czy K $ 8 i G $ 5 to 8 K $ i 5 G $? Brak bezwzględnych odniesień w kolumnach martwi mnie, że formuła może nie działać, chyba że w konkretnej kolumnie.
Jeeped

Odpowiedzi:

1

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

Function PctChange(A As Double, B As Double) As Double
   PctChange = (A + B) / B
End Function

Gdy dzwonisz do funkcji, rób to, co normalnie robisz. W dowolnym typie komórki PctChange (CellA, Cell B).

wbeard52
źródło