#excel #vba #excel-formula
#excel #vba #excel-формула
Вопрос:
Мне было интересно, можно ли преобразовать формулы в самую конечную ссылку на ячейку с помощью макроса VBA.
Например. Допустим, формула в ячейке H2 выглядит следующим образом
=IFERROR(INDEX($D$2:$D$7,MATCH($F2,$C$2:$C$7,0)),"")
Теперь предположим, что оценка этой функции сопоставления индексов направляет нас к ячейке D3 (т. Е. Значение в ячейке F2 было таким же, как и в ячейке C3).
Так можно ли преобразовать эту формулу в
=D3
В качестве окончательной оценки было использовано значение D3.
Чтобы добраться до этого, я попытался использовать
Evaluate(ActiveCell.Formula).Address
Приведенная выше строка кода будет работать с простыми функциями, такими как простое совпадение ИНДЕКСОВ, СМЕЩЕНИЕ, КОСВЕННОЕ. Но как только вы добавляете IFERROR, он перестает функционировать.
Возможно ли создать универсальный макрос, который разбивал бы все формулы внутри ячейки на их наиболее конечные ссылки на ячейки
Спасибо.
Комментарии:
1. ИНДЕКС преобразуется в полезную ссылку на ячейку; например
D3
. Вы получаете значение из него, потому что вы по сути говорите,=D3
как показывает ваша оценка. Другие функции (например, VLOOKUP) фактически преобразуются непосредственно к значению, поэтому вы не можете получить результирующую ячейку; например=<value in D3>
. IFERROR удаляет ссылку на ячейку, чтобы можно было определить, была ли выдана ошибка. Я не понимаю, как вы могли бы получить универсальную процедуру оценки VBA.