У меня нет опыта работы с vba, и мне нужно преобразовать эту процентильную функцию в пользовательскую функцию vba.
=PERCENTILE(
IF('RAW JO TIME'!$J$2:$J$51816=$A7,
IF($B$4="(All)",'RAW JO TIME'!$P$2:$P$51816,
IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)
)
),
E$6)
Где $A7, $B$4 и E$6 должны быть переданы в качестве параметров...
Я пробовал разные подходы, но ни один из них не работает. Поискав на форумах, я нашел возможное решение:
ActiveCell.Formula = "=IF('RAW JO TIME'!$J$2:$J$51816=" & InputRange & ", IF($B$4=""(All)"",'RAW JO TIME'!$P$2:$P$51816, IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)))"
Где "InputRange" - это ячейка, переданная в качестве параметров, значение которой ищется в диапазоне другого листа...
Также пробовал это
Dim r As Range
Set r.FormulaArray = "=IF('RAW JO TIME'!$J$2:$J$51816=$A7, IF($B$4=""(All)"",'RAW JO TIME'!$P$2:$P$51816, IF('RAW JO TIME'!$M$2:$M$51816=$B$4,'RAW JO TIME'!$P$2:$P$51816)))"
Как видите, я не использовал параметры для этого, просто попытался протестировать формулу массива как есть... но я получил тот же результат. Выполнение останавливается в Set r.FormulaArray
Насколько я понимаю, этот оператор IF вернет диапазон ячеек или матрицу данных, которые впоследствии будут использоваться функцией Percentile...
Но потом, когда я отлаживаю код, он застревает в ActiveCell.Formula... почему это может быть?
Мне интересно, будет ли лучшим решением в этом случае реализовать каждое из «если» в функции как оператор VB if?
Помощь будет оценена
Спасибо!