#excel #vba #graph-theory
#excel #vba #теория графов
Вопрос:
На панели инструментов отладки вы можете нажать кнопку, которая показывает вам направленные стрелки ячеек, которые напрямую вызываются выбранной ячейкой (я называю эти прямые прецеденты «первым слоем»). Однако, когда вы используете Precedents
свойство для ячейки, оно возвращает все ячейки на листе, от которых зависит ячейка.
Например, у меня есть ячейка DT836
с формулой:
=DP836 DR836 DS836
Панель инструментов отладки «Трассировка прецедентов» показывает красивую синюю стрелку, соединяющую эти три ячейки с ячейкой DT836
.
Range("DT836").Precedents
содержит диапазон ячеек более 70 000, при этом (насколько я могу судить) невозможно отличить, насколько зависимый находится на расстоянии от его прецедента.
Есть ли способ определить это с помощью VBA?
Ответ №1:
Оказывается, для диапазонов существует другое свойство, которое сообщает вам об этом, DirectPrecidents
.
Я думал, что это будет свойство прецедентов, а не отдельное свойство само по себе.
Ответ №2:
Alec,
Спасибо, что закрыли свой собственный вопрос. Я публикую эти комментарии в качестве ответа, а не комментария, учитывая их длину
Excel довольно неустойчив, когда дело доходит до функциональности 3D (на разных листах). Оба Precedents
и DirectPrecedents
работают только на локальном листе
Для работы с внешними прецедентами и зависимыми элементами вам нужно будет использовать метод NavigateArrows, это эквивалент VBA для отслеживания прецедентов и зависимых элементов через панель инструментов аудита.
Билл Манвилл некоторое время назад проделал большую работу по этому подходу, ниже приведены две ссылки, применяющие подход Билла. Первый предоставляет функцию Билла, вторая ссылка от меня, эта статья выглядит «назад», чтобы проверить, ссылается ли определенное число в конечном итоге на определенный лист