Formatear cualquier celda a la que se hace referencia en una fórmula

Formatear cualquier celda a la que se hace referencia en una fórmula

Tengo dos hojas, una con fórmulas que extraen datos de la segunda. Necesito crear una macro o algún formato condicional para resaltar la celda en verde si los datos se extrajeron de la segunda hoja. La hoja dos son datos sin procesar y la hoja uno es un desglose de los datos en diferentes tablas.

Para aclarar mi Queston, tengo una hoja de datos sin procesar y una hoja de ingresos. La Hoja de Ingresos tiene fórmulas que extraen datos de la tabla en la hoja de datos sin procesar. Lo que estoy tratando de hacer es:Resalte todas las celdas en la hoja de datos sin procesar a las que se llama o se hace referencia en la hoja del estado de resultados.; de esa manera, sé si algo en la hoja de datos brutos no se usó o no se incluyó en la hoja de ingresos. La fórmula en el estado de resultados de la que extraigo datos de la hoja de datos sin procesar es:

=IF(ISERROR(VLOOKUP($A643, 'Raw Data'!$A:$N, 4, FALSE)), "-", VLOOKUP($A643, 'Raw Data'!$A:$N, 4, FALSE))

La columna A tiene un código específico que aparece en la Hoja de datos sin procesar en la misma columna. Espero que esta información ayude. ¡Gracias! Encontré este código a continuación, pero no sé cómo ajustarlo para verificarlo en una hoja 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

Respuesta1

Un enfoque con formato condicional, sin ningún VBA, implica la función FormulaText() que está disponible en Excel 2013 y versiones posteriores.

Cree una fórmula condicional con un formato que verifique si el nombre de una hoja específica existe en la fórmula. Por ejemplo, si una hoja se llama "datos sin procesar", esta fórmula resaltará las celdas que hacen referencia a esa hoja.

=ISNUMBER(SEARCH("raw data",FORMULATEXT(A2)))

ingrese la descripción de la imagen aquí

Esto también se puede aplicar para verificar si una fórmula hace referencia a una tabla de Excel, utilizando referencias estructuradas, donde el nombre de la hoja no aparece en la fórmula, pero el nombre de la tabla sí.

=ISNUMBER(SEARCH("RawDataTable",FORMULATEXT(A2)))

Usar diferentes fórmulas condicionales para diferentes hojas puede ser una forma muy eficaz de resaltar rápidamente datos que no se originan en la hoja actual.

Nota: En teoría, cualquier referencia (no estructurada) a otra hoja podría identificarse mediante el !signo después del nombre de la hoja en la referencia, pero a veces, al crear fórmulas que abarcan varias hojas, una referencia a una celda de la hoja actual también podría identificarse. incluya el nombre de la hoja, por lo que ese enfoque debe utilizarse con precaución.

información relacionada