Existe uma maneira de dizer quais células referenciam uma célula selecionada no Excel?

3

No Excel, você pode dizer a uma célula para fazer referência a outra célula para calcular seu valor. Eu gostaria de fazer o oposto, para obter qualquer célula que faça referência à célula atualmente selecionada. Isso é possível no Excel, seja como uma das funções internas ou um script VBA?

    
por Daniel T. 06.12.2010 / 20:56

6 respostas

4

Não é possível dizer como usá-lo programaticamente, mas na faixa Fórmulas existe um painel "Auditoria de Fórmulas" que permite "Rastrear Dependentes" e desenha uma seta visual na planilha da célula atualmente selecionada para qualquer um que referenciá-lo através de uma fórmula.

Também há um comando "Precedentes de rastreamento" correspondente.

    
por 06.12.2010 / 21:24
2

Aparentemente, você pode acessar Precedentes / Dependentes de rastreamento em uma macro: Macro Código Para Dependentes de rastreamento / Precedentes @ OzGrid.com , com um link para um post com um comentário preenchido Função VBA @ vbaexpress.com :

Sub FindPrecedents() 
     ' written by Bill Manville
     ' With edits from PaulS
     ' this procedure  finds the  cells which are the direct precedents of the active cell
    Dim rLast As Range, iLinkNum As Integer, iArrowNum As Integer 
    Dim stMsg As String 
    Dim bNewArrow As Boolean 
    Application. ScreenUpdating = False 
    ActiveCell.ShowPrecedents 
    Set rLast = ActiveCell 
    iArrowNum = 1 
    iLinkNum = 1 
    bNewArrow = True 
    Do 
        Do 
            Application.Goto rLast 
            On  Error Resume Next 
            ActiveCell.NavigateArrow TowardPrecedent:=True, ArrowNumber:=iArrowNum, LinkNumber:=iLinkNum 
            If Err.Number > 0 Then Exit Do 
            On Error Goto 0 
            If rLast.Address(external:=True) = ActiveCell.Address(external:=True) Then Exit Do 
            bNewArrow = False 
            If rLast.Worksheet.Parent.Name = ActiveCell.Worksheet.Parent.Name Then 
                If rLast.Worksheet.Name = ActiveCell.Parent.Name Then 
                     ' local
                    stMsg = stMsg & vbNewLine & Selection.Address 
                Else 
                    stMsg = stMsg & vbNewLine & "'" & Selection.Parent.Name & "'!" & Selection.Address 
                End If 
            Else 
                 ' external
                stMsg = stMsg & vbNewLine & Selection.Address(external:=True) 
            End If 
            iLinkNum = iLinkNum + 1 ' try another  link
        Loop 
        If bNewArrow Then Exit Do 
        iLinkNum = 1 
        bNewArrow = True 
        iArrowNum = iArrowNum + 1 'try another arrow
    Loop 
    rLast.Parent.ClearArrows 
    Application.Goto rLast 
    MsgBox "Precedents are" & stMsg 
    Exit Sub 
End Sub 

FYI, o autor do segundo post diz que essa função não pode manipular referências externas para pastas de trabalho fechadas. Isso é deixado como um exercício para o leitor.

    
por 06.12.2010 / 23:10
1

Aqui está um link para o exemplo precedente de traço vba no msdn.

link

    
por 06.12.2010 / 21:35
1

Pressione Ctrl + Deslocamento + } para selecionar todos os dependentes: células que fazem referência à (s) célula (s) selecionada (s).

    
por 23.01.2015 / 12:36
0

No Office 2007, procure fórmulas e use precedentes de rastreio ou dependentes de rastreio. Não me lembro onde está nas versões anteriores, mas é a mesma ação

    
por 06.12.2010 / 21:22
0

No Excel 2008 (mac) está localizado:

Ferramentas > Auditoria > Dependentes de rastreamento

** Digitando Trace no menu Help no Mac mostra todas as funções do menu Trace. *

As macros não são suportadas no Mac, mas se uma macro for gravada usando a versão do Excel do Windows, a versão do Mac será executada. Frustrante, mas é verdade.

    
por 17.10.2012 / 21:42