Как отследить косвенные прецеденты в Excel?

Кнопки «Отслеживать прецеденты / зависимые» в Excel чрезвычайно полезны при анализе структуры сложной электронной таблицы.

У меня есть лист, состоящий из множества вызовов, прецеденты которых генерируются программно с использованием ссылочных функций, таких как CELL (), OFFSET () и т. Д., Где аргументами этих функций являются выражения.

При использовании кнопок трассировки Excel не будет отслеживать ячейки, которые явно не упоминаются в формуле.

Есть ли способ получить полный набор прецедентов конкретной ячейки?

Примечание. Выполняя поиск в Google, я увидел приложение в Office Marketplace, которое можно купить и предположительно оно делает. Интересно, есть ли способ сделать это с помощью предоставленных функций Excel?

РЕДАКТИРОВАТЬ: вот пример: в ячейке M5 у меня есть следующая формула, которая ссылается на D5, D13 и G6. G6 вычисляется функцией OFFSET () относительно G4.

=IMSUM($D5,IMPRODUCT($D13,OFFSET($G$4, 2*(ROW()-ROW($G$4)), 0)))

При отслеживании прецедентов ячейки Excel не отображает ячейку G6. Вместо этого отображается база смещения, которая равна G4.


person ysap    schedule 17.04.2012    source источник
comment
Не могли бы вы дополнить свой вопрос несколькими примерами некоторых из ваших более сложных формул?   -  person Tim Williams    schedule 17.04.2012
comment
и я предполагаю, что не существует такого монстра, как полный набор прецедентов, если вы хотите включить изменчивые пользовательские функции или произвольные комбинации обычных функций, таких как offset(if(indirect(sumproduct(...   -  person Aprillion    schedule 19.04.2012
comment
@deathApril - если бы я был разработчиком Excel, подход, который я мог бы использовать, мог бы заключаться в выполнении этого анализа во время выполнения таким образом, чтобы пересчитывать лист и запись, которые являются (1-е поколение - я не ищу большего) ячейки, которые вносят вклад в значение ячейки. Перебор всех нетривиальных ячеек формулы покажет структуру зависимостей листа.   -  person ysap    schedule 19.04.2012


Ответы (1)


а) перепроектировать весь механизм формул Excel

б) напишите парсер VBA только для вашего случая - т.е. получите аргументы OFFSET из строки формулы и оцените их

в) не используйте изменчивые формулы, если можно этого избежать - например,
=IMSUM($D5,IMPRODUCT($D13,INDEX($G$4:$G$999, 2*(ROW()-ROW($G$4)) + 1)))

person Aprillion    schedule 21.04.2012
comment
Спасибо, что касается b), мне нужно было бы проанализировать каждую функцию, которая потенциально косвенно ссылается на ячейку, а это много функций ... - person ysap; 21.04.2012
comment
@ysap только каждую функцию, которую вы хотите использовать для косвенной ссылки на ячейку;)) я добавил вариант c) если вы можете использовать функции поиска вместо смещения и именованные диапазоны вместо косвенных ... - person Aprillion; 22.04.2012