Estoy tratando de hacer un formato condicional para que el color de la celda cambie si el valor es diferente del valor en la celda a la izquierda (cada columna es un mes, en cada fila están los gastos de cierto objeto. Quiero monitorear cambia fácilmente los precios durante meses).
Puedo hacerlo por celda y formatearlo y arrastrarlo, pero me gustaría aplicar una fórmula general a toda la hoja de trabajo.
¡Gracias!
=INDIRECT("RC[1]",0)
Respuestas:
fuente
="OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)=""xyz"""
pero la celda no está formateada. ¿Qué pasa?La versión más corta y compatible es:
"RC [-1]" significa una columna a la izquierda. "R [1] C [-1]" está en la parte inferior izquierda.
El segundo parámetro 0 significa que el primer parámetro se interpreta utilizando la notación R1C1.
Las otras opciones:
Demasiado tiempo en mi opinión. Pero útil si el valor relativo es dinámico / derivado de otra celda. p.ej:
La opción más sencilla:
tiene la desventaja de que necesita activar la notación R1C1 usando opciones, lo cual no es posible cuando otras personas tienen que usar Excel.
fuente
Al crear su formato condicional, establezca el rango al que se aplica a lo que desea (toda la hoja), luego ingrese una fórmula relativa (elimine los
$
signos) como si solo estuviera formateando la esquina superior izquierda.Excel aplicará correctamente el formato al resto de las celdas en consecuencia.
En este ejemplo, comenzando en B1, la celda de la izquierda sería A1. Solo use eso, no se requiere una fórmula avanzada.
Si lo que buscas es algo más avanzado, se puede jugar con
column()
,row()
yindirect(...)
.fuente
Si cambia la referencia de su celda para usar la notación R1C1 (Herramientas | Opciones, pestaña General), puede usar una notación simple y pegarla en cualquier celda.
Ahora tu fórmula es simplemente:
fuente
En lugar de escribir el muy largo:
Simplemente puede escribir:
Así, por ejemplo, puede escribir en la celda B2 :
para hacer referencia a la celda B1
¡¡Aún así gracias Jason Young !! ¡Nunca se me hubiera ocurrido esta solución sin tu respuesta!
fuente
llene la celda A1 , con la siguiente fórmula:
Luego, autoextender a la derecha, obtienes
Si el desplazamiento está fuera del rango de la celda disponible, obtienes el #REF! error.
Espero que lo disfrutes.
fuente
Aún más simple:
OFFSET devuelve una referencia relativa a la referencia actual, por lo que si indirecto devuelve la referencia correcta, no la necesita.
fuente
Al crear una función definida por el usuario , descubrí que las otras respuestas que involucran las funciones
OFFSET
yINDIRECT
no se pueden aplicar.En su lugar, debe utilizar
Application.Caller
para hacer referencia a la celda en la que se ha utilizado la función definida por el usuario (UDF). En un segundo paso, convierte el índice de la columna al nombre de la columna correspondiente.Finalmente, puede hacer referencia a la celda izquierda usando la función de rango de la hoja de trabajo activa .
Function my_user_defined_function(argument1, argument2) ' Way to convert a column number to its name copied from StackOverflow ' http://stackoverflow.com/a/10107264 ' Answer by Siddarth Rout (http://stackoverflow.com/users/1140579/siddharth-rout) ' License (if applicable due to the small amount of code): CC BY-SA 3.0 colName = Split(Cells(, (Application.Caller(1).Column - 1)).Address, "$")(1) rowNumber = Application.Caller(1).Row left_cell_value = ActiveSheet.Range(colName & rowNumber).Value ' Now do something with left_cell_value
fuente
Puede usar un script VBA que cambie el formato condicional de una selección (es posible que deba ajustar la condición y el formato en consecuencia):
fuente
Me topé con este hilo porque quería siempre hacer referencia a la "celda de la izquierda" pero CRUCIALMENTE de una manera no volátil (sin DESPLAZAMIENTO, INDIRECTO y desastres similares). Mirando la web de arriba abajo, no hay respuestas. (Este hilo tampoco proporciona una respuesta). Después de algunos retoques, me topé con el método más asombroso, que me gusta compartir con esta comunidad:
Suponga un valor inicial de 100 en E6. Suponga que ingreso un delta a este valor en F5, digamos 5. Luego calcularíamos el valor de continuación (105) en F6 = E6 + F5. Si desea agregar otro paso, fácil: simplemente copie la columna F en la columna G e ingrese un nuevo delta en G5.
Esto es lo que hacemos periódicamente. Cada columna tiene una fecha y estas fechas DEBEN ESTAR en orden cronológico (para ayudar con el PARTIDO, etc.). De vez en cuando sucede que nos olvidamos de entrar en un paso. Ahora suponga que desea insertar una columna entre F y G (para ponerse al día con su omisión) y copiar F en la nueva G (para volver a completar la fórmula de continuación). Esto es NADA MENOS que un desastre total. Pruébelo: H6 ahora dirá = F6 + H5 y NO (ya que es absolutamente necesario) = G6 + H5. (El nuevo G6 será correcto).
Para que esto funcione, podemos ofuscar este cálculo banal de la manera más asombrosa F6 = índice ($ E6: F6; 1; columnas ($ E1: F1) -1) + F5. Copie a la derecha y obtendrá G6 = índice ($ E6: G6; 1; columnas ($ E1: G1) -1) + G5.
Esto nunca debería funcionar, ¿verdad? ¡Referencia circular, claro! Pruébelo y sorpréndase. Excel parece darse cuenta de que, aunque el rango de ÍNDICE abarca la celda que estamos recalculando, esa celda en sí no está dirigida por el ÍNDICE y, por lo tanto, NO crea una referencia circular.
Así que ahora estoy en casa y seco. Inserte una columna entre F y G y obtenemos exactamente lo que necesitamos: el valor de continuación en la antigua H se referirá al valor de continuación que insertamos en la nueva G.
fuente
Por qué no usar:
fuente
Hacer una fórmula con nombre "LeftCell"
Para aquellos que buscan una respuesta no volátil, pueden lograrlo usando la función INDICE en una fórmula con nombre.
Seleccione la celda A2
Abierto
Name Manager
(Ctrl + F3)Hacer clic
New
Nómbrelo 'LeftCell' (o lo que prefiera)
Para
Scope:
, seleccioneWorkbook
En
Refers to:
, ingrese la fórmula:=INDEX(!A1:!A2, 1)
Haga clic
OK
y cierreName Manager
Esto le dice a Excel que siempre mire el valor inmediatamente a la izquierda de la celda actual, y cambiará dinámicamente a medida que se seleccionen diferentes celdas. Si el nombre se usa solo, proporciona el valor de la celda, pero en un rango usa la referencia. Crédito a esta respuesta sobre referencias de celda para la idea.
fuente
Creo que esta es la respuesta más sencilla.
Utilice un "Nombre" para hacer referencia al desplazamiento.
Supongamos que desea sumar una columna (Columna A) hasta la celda que contiene la suma, pero sin incluirla (por ejemplo, Celda A100); hacer esto:
(Supongo que está utilizando la referencia A1 al crear el nombre; posteriormente, se puede cambiar a R1C1)
fuente
Seleccione la hoja completa e INICIO> Estilos - Formato condicional, Nueva regla ..., Use una fórmula para determinar qué celdas formatear y Formatear valores donde esta fórmula es verdadera ::
Format..., Seleccione la opción de formato, OK, OK.
fuente