Я часто сталкиваюсь с ситуациями, когда я пишу очень похожие, но подробные формулы, которые используют один и тот же диапазон в качестве аргумента для нескольких функций.

В качестве простого примера рассмотрим:

=(A+B)/B

Есть ли простой способ, которым я мог бы создать UDF, такой как:

=PCTCHANGE(A,B)

Что может выполнить точно такой же расчет, как указано выше? Я понимаю, что с простыми арифметическими операторами это тривиально, но есть ли простой способ объединить что-то более сложное в одну простую функцию?

=IF(""=$U30,"",G30/IF(ROW(G30)-MONTH(U30)<ROW(K$8),G$5,OFFSET(G30,-MONTH(U30),0))-1)

Я хотел бы избежать перевода формулы в приложение.WorksheetFunction вызывает. Я предполагаю применение.Оценка, вероятно, является частью решения, но я не могу понять, как передать диапазоны в него через UDF.

1 ответ1

1

Вам нужно будет открыть VBA и создать UDF из модуля.

Введите ALT-F11, чтобы открыть редактор VBA. Под вашим проектом, щелкните правой кнопкой мыши и выберите Вставить -> Модуль

Введите следующее в окне редактора VBA

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

Когда вы вызываете функцию, делайте то, что вы обычно делаете. В любой ячейке типа PctChange(CellA, Cell B).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .