
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)))
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.