
El título realmente expresa completamente lo que estoy tratando de hacer, pero es un poco complicado y arcano, así que lo explicaré con un caso de uso:
Si tengo un libro de Excel con dos hojas (HojaA y HojaB) que están muy cerca una de la otra, y me gustaría que las diferencias se resalten visualmente, una forma típica de hacerlo podría ser algo como esto:
- En la Hoja A, resalte todas las celdas
- Ingresar formato condicional, Nueva regla, Usar fórmula
- En el cuadro de fórmula ingrese:
=a1<>HojaB!a1
- aplique el formato deseado y presione 'Aceptar'
Básicamente, lo que esto hace es comparar cada celda de la Hoja A con su contraparte en la Hoja B y, si no son iguales, aplicar el formato. Si los nombres de las hojas son complejos (especialmente si contienen espacios y, por lo tanto, necesitan comillas), hacer clic en el nombre de la pestaña durante la entrada de la fórmula resulta útil.
Pero ahora supongamos queen alguna celda de la Hoja A,Ingresé una expresión de texto que contiene el nombre de HojaB y me gustaría hacer referencia a esa celda en la fórmula de formato condicional anterior.
(¿Por qué? Podría tener 100 hojas de cálculo y me gustaría comparar 1 con 2, luego 1 con 3, luego 1 con 55, cambiando el texto de la celda, en lugar de cambiar manualmente el formato condicional cada vez).
¿Cómo puedo hacer eso?
Soy consciente de que la función INDIRECTA se usa para convertir texto en nombres de hojas y he probado múltiples variaciones sobre ese tema, usando la función INDIRECTA como parte de la fórmula de formato condicional, pero nada parece funcionar realmente.
Respuesta1
Utilice una fórmula de formato condicional como esta:
= A1 <> INDIRECT(ADDRESS(ROW(A1), COLUMN(A1),,, aSheet), TRUE)
Reemplace aSheet
con una referencia a la celda donde almacenó el nombre de la hoja para comparar.
ElADDRESS()
La función ensambla una referencia de celda como una cadena de texto, utilizando las funciones ROW()
y COLUMN()
para calcular la fila y columna de la celda que se está evaluando.
Puede omitir la ADDRESS()
función y simplemente crear la referencia de celda en formato R1C1 usando la concatenación de cadenas, pero la fórmula anterior probablemente sea más fácil de leer y comprender. El equivalente sería:
= A1 <> INDIRECT(aSheet & "!R" & ROW(A1) & "C" & COLUMN(A1), FALSE)