
Tenho duas planilhas, uma com fórmulas extraindo dados da segunda. Preciso criar uma macro ou algum formato condicional para destacar a célula em verde se os dados foram extraídos da segunda planilha. a planilha dois contém dados brutos e a planilha um é uma divisão dos dados em tabelas diferentes.
Para esclarecer minha questão, tenho uma planilha de dados brutos e uma planilha de receitas. A Folha de Resultados possui fórmulas que extraem dados da tabela na planilha de dados brutos. O que estou tentando fazer é:Destaque todas as células na planilha de dados brutos que são chamadas/referenciadas na planilha de demonstração de resultados; dessa forma, sei se algo na planilha de dados brutos não foi usado ou incluído na planilha de receitas. A fórmula na demonstração de resultados que retiro os dados da planilha de dados brutos é:
=IF(ISERROR(VLOOKUP($A643, 'Raw Data'!$A:$N, 4, FALSE)), "-", VLOOKUP($A643, 'Raw Data'!$A:$N, 4, FALSE))
A coluna A possui um código específico que aparece na planilha de dados brutos da mesma coluna. Espero que esta informação ajude. Obrigado! Encontrei esse código abaixo, mas não sei como ajustá-lo para verificar em uma planilha separada.
Sub Button5_Click()
'PLEASE EDIT THIS FIRST BIT.
Dim row As Integer
row = 1 ' THE STARTING ROW IN YOUR EXCEL SHEET
Dim numberOfRows As Integer
numberOfRows = 5 'THE TOTAL NUMBER OF ROWS YOUR WORKSHEET HAS
Dim columnWithFormula As String
columnWithFormula = "E" ' THE COLUMN WHERE THE FORMULAs ARE (I suspect you are using B if your example is accurate))
Dim colourIndex As Integer
colourIndex = 26 ' WHAT COLOUR TO HIGHLIGHT COLUMNS. GOOGLE VBa COLOR INDEX
'AND STOP EDITING :)
For row = 1 To numberOfRows
If range(columnWithFormula & row).Value <> "" Then
Dim result As String
result = range(columnWithFormula & row).Formula
result = Replace(result, "(", " ")
result = Replace(result, ")", " ")
result = Replace(result, "-", " ")
result = Replace(result, "+", " ")
result = Replace(result, "*", " ")
result = Replace(result, "/", " ")
result = Replace(result, "=", " ")
result = Replace(result, ",", " ")
Dim cells() As String
cells = Split(Trim(result), " ")
For j = 0 To UBound(cells)
range(cells(j)).Interior.ColorIndex = colourIndex
Next j
End If
Next row
End Sub
Responder1
Uma abordagem com formatação condicional, sem qualquer VBA, envolve a função FormulaText() que está disponível no Excel 2013 e superior.
Crie uma fórmula condicional com um formato que verifica se o nome de uma planilha específica existe na fórmula. Por exemplo, se uma planilha for chamada de “dados brutos”, esta fórmula destacará as células que se referem a essa planilha.
=ISNUMBER(SEARCH("raw data",FORMULATEXT(A2)))
Isso também pode ser aplicado para verificar se uma fórmula faz referência a uma tabela do Excel, usando referências estruturadas, onde o nome da planilha não aparece na fórmula, mas o nome da tabela sim.
=ISNUMBER(SEARCH("RawDataTable",FORMULATEXT(A2)))
Usando diferentes fórmulas condicionais para planilhas diferentes, esta pode ser uma maneira muito eficaz de destacar rapidamente dados que não se originam na planilha atual.
Nota: Teoricamente, qualquer referência (não estruturada) a outra planilha poderia ser identificada pelo !
sinal após o nome da planilha na referência, mas às vezes, ao criar fórmulas que atravessam planilhas, uma referência a uma célula na planilha atual também pode inclua o nome da planilha, portanto essa abordagem deve ser usada com cautela.