Страницы: 1 2 След.
RSS
Найти зависимую ячейку в книге, Нужен макрос
 
Добрый вечер ..творил творил ... куча листов ..что зачем уже забыл ..хочу лишние по удалять ,  нажимаю на ячейку показать зависимые ..пунктирная стрелка  абы куда ..как мне найти эти ячейки ? А лучше сначала все ячейки на листе у которых есть зависимые за его пределами , Спасибо
 
щелкаете по отображаемой стрелке (пунктирная линия), щелкаете в открывшемся окошке по ссылке которая там есть, их может быть несколько и нажимаете перейти.  
 
У меня нигде не щелкается... пунктирная стрелка и табличка маааленькая такая  ... где там перейти?
 
Есть еще вторая часть ...  "А лучше сначала все ячейки на листе у которых есть зависимые за его пределами , Спасибо"
 
Подниму ..это что не решаемая проблема? Или никто не сталкивался?
 
Если я правильно понял:
Ctrl+[ или Ctrl+]

Если 2013-й и новее, есть встроенная надстройка "Inquire", там Cell Relations - покажет всю схему какая ячейка куда ссылается
Изменено: Бахтиёр - 22.07.2016 08:51:03
 
Микки, файл-пример приложите.
Имхо, для поиска ячеек ссылающихся на яч., которые НЕ с текущего листа, то достаточно две проверки:
1) ячейка.HasFormula
2) ячейка.Formula Like "*!*"
Изменено: JayBhagavan - 22.07.2016 08:51:03

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
JayBhagavan написал:
ячейка.Formula Like "*!*"
не 100%-ная гарантия

Например:
=ПОДСТАВИТЬ(A1;"!";"воскл,знак") не ссылается на другой лист
Изменено: Бахтиёр - 22.07.2016 08:53:35
 
Бахтиёр, да, Вы правы. Нужно анализировать разные варианты содержимого ячеек и под них разрабатывать алгоритм. Направление дано.
ЗЫ Только что пришло в голову, нужно исключить из содержимого всё, что взято в двойные кавычки и тогда проверять на наличие символа "!".
Изменено: JayBhagavan - 22.07.2016 08:56:54

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Прикладываю файл, в идеальном случае надо найти связанную, и показать куда она связывает
 
Код
Sub jjj_find_external_links()
    Dim sStr As String
    If ActiveCell.HasFormula Then
        With CreateObject("VBScript.RegExp")
            .Global = True
            .Pattern = """.*?"""
            sStr = .Replace(ActiveCell.Formula, "")
        End With
        If sStr Like "*!*" Then
            MsgBox "Find external links!"
        Else
            MsgBox "Not found external links!"
        End If
    End If
End Sub
Для активной ячейки. Добавить перебор всех яч. на листе не составит труда. Тестируйте. Предлагайте дополнения. Модифицируйте.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, ваш код пропускает такую ссылку:
=ДВССЫЛ("Лист2!A1")
 
Цитата
Микки написал: Прикладываю файл
Для этого конкретного примера работает:
Зависимости ячейки
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Бахтиёр написал: пропускает такую ссылку: =ДВССЫЛ("Лист2!A1")
тут надо понимать: это не ссылка. И по факту тогда надо вычислять саму ДВССЫЛ. Т.е. сначала парсить формулу на поиск в ней этой функции. Плюс есть ИНДЕКС, СМЕЩ и т.п. которые непосредственно ссылками указывают на диапазон, но возвращать могут лишь одну ячейку или вообще другой диапазон.
Т.е. надо все же какую-то погрешность закладывать в такие алгоритмы в любом случае. Универсального и отвечающего всем требованиям решения вряд ли можно будет добиться.  
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Бахтиёр написал: код пропускает такую ссылку: =ДВССЫЛ("Лист2!A1")
Спасибо. В курсе. Забыл озвучить.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
The_Prist написал:
Универсального и отвечающего всем требованиям решения вряд ли можно будет добиться.
+1
 
Код
Sub jjj_find_external_links()
    Dim sFormula As String, sStr As String, tfHasIndirect As Boolean
    
    tfHasIndirect = False
    sStr = ""
    
    If ActiveCell.HasFormula Then
        sFormula = ActiveCell.Formula
        With CreateObject("VBScript.RegExp")
            .Global = True
            .IgnoreCase = True
            
            .Pattern = """.*?"""
            sStr = .Replace(sFormula, "")
            
            .Pattern = "INDIRECT\(.*?"".*?!.*?"".*?\)"
            tfHasIndirect = .Test(sFormula)
        End With
    End If
    If sStr Like "*!*" Or tfHasIndirect Then
        MsgBox "Find external links!"
    Else
        MsgBox "Not found external links!"
    End If
End Sub
Добавил проверку ДВССЫЛ().
ЗЫ Модифицировал Pattern для INDIRECT.
Изменено: JayBhagavan - 22.07.2016 10:17:01

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
The_Prist написал: Для этого конкретного примера работает:
Дима у нас сисадмины не позволяют ставить )))
 
Цитата
JayBhagavan написал: Тестируйте. Предлагайте дополнения.
не срабатывает на =ДВССЫЛ(A1&"!A1")
 
Че то у мен не фурычит ..на реальном файле , там правда до фига ссылок ,  дает табличку что нашла и крутит колесико минуты 2 , при нажатии ОК ничего не происходит
 
Да и на тестовом файле если встал на ячейку пишет нашла и все...))) а Если не встал то и не нашла..
 
Цитата
Микки написал:  не фурычит
Цитата
JayBhagavan написал: Направление дано
Цитата
JayBhagavan написал: Модифицируйте.
 
Цитата
Бахтиёр написал: не срабатывает на =ДВССЫЛ(A1&"!A1")
Исправил вроде бы. Хотя если будет:
"=ДВССЫЛ(A1)" или "=ДВССЫЛ("Лист1"&A1)"
и в A1 будет "!", то не сработает.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
JayBhagavan написал:
и в A1 будет "!", то не сработает.
:)
 
Я в макросах полный 0 те кто старые форумчане знают это прекрасно и боюсь что в 58 уже ни чему не научусь)) Так что модифицируйте это для меня приговор ...А вот формулы ради бога
 
Микки, допустим макрос отработает по всем ячейкам с формулами текущего листа. В каком виде и где нужен результат?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Для того, чтобы перейти из из ячейки во влияющую ячейку/ки  - я нажимаю Ctrl+[
Согласен, есть куча ньюансов, но в основном помогает.
Если у вас офис 2013-й и новее, посмотрите пост №6
 
Цитата
JayBhagavan написал: допустим макрос отработает по всем ячейкам с формулами текущего листа. В каком виде и где нужен результат?
Наверное список на  другом листе (Связи) влияющая связанная...чаще всего это только одна
 
я нажимаю Ctrl+[ у меня не работает
 
попробуйте Ctrl+Shift+[
Страницы: 1 2 След.
Наверх