¿Cómo evito que las fórmulas y rangos de formato condicional cambien automáticamente?


24

Descubrí que las fórmulas y rangos de formato condicional se ajustarán automáticamente cuando copie, elimine o mueva datos en una hoja de cálculo. Si bien esta es una buena idea, tiende a romperme las cosas de maneras bastante extrañas.

Para evitar esto, intenté escribir reglas que se aplicaran a toda la hoja de cálculo y eliminé los encabezados de columna para resaltar los datos que quería verificar.

Ejemplo: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))aplicado a=$1:$1048576

Sin embargo, incluso con la regla aplicada explícitamente a toda la hoja, todavía se ajustaba automáticamente (y se rompía de manera extraña al hacerlo) mientras trabajaba en la hoja.

¿Cómo puedo evitar esto?


Quizás no pueda usar toda la hoja de cálculo ... ¿Puede dar un ejemplo más concreto de lo que está haciendo?
Doktoro Reichard

¿Podría tener una captura de pantalla e indicar qué áreas se rompen?
Jerry

@JohnBensin Parece que es exactamente lo que estaba buscando. Trataré de recordar eso la próxima vez.
Iszi

@Iszi lo agregué como respuesta. Estoy seguro de que sabe cómo agregar rangos con nombre, pero incluyo detalles en la respuesta para futuros visitantes (y porque cuando aprendí a usar Excel, nunca pude recordarlo).
John Bensin

Un artículo sobre exactamente lo que sale mal: pesadilla de formato condicional de Excel 2010 . Seguro que lo hicieron mucho peor al intentar hacerlo un poco mejor ...
RomanSt

Respuestas:


7

Cuando necesito un rango que no debería cambiar bajo ninguna circunstancia, como mover, insertar y eliminar celdas, utilicé un rango con nombre y la INDIRECTfunción.

Por ejemplo, si quiero que un rango siempre se aplique a las celdas A1:A50, definí un rango con nombre a través del Administrador de nombres:

agregar rango con nombre

En el Administrador de nombres, agregue un nuevo rango (haga clic en Nuevo) y, en el campo Se refiere a:, use la función INDIRECTA para especificar el rango de celdas que desea, por ejemplo, =INDIRECT("A1:A50")o =INDIRECT("Sheet!A1:A50"). Debido a que el rango es técnicamente solo un argumento textual, ninguna cantidad de celdas reorganizadas hará que Excel lo actualice.

Además, esto funciona al menos en Excel 2010 y Excel 2013. Aunque mi captura de pantalla es de 2013, he usado esta técnica exacta en 2010 en el pasado.

Advertencias

  1. Ten en cuenta que esta invariancia también puede hacerte tropezar. Por ejemplo, si cambia el nombre de la hoja, el rango con nombre se romperá.

  2. He notado un impacto menor en el rendimiento al usar esta estrategia en un número significativo de celdas. Un modelo que uso en el trabajo usa esta técnica con rangos con nombre que abarcan varios miles de rangos de celdas dispares, y Excel se siente un poco lento cuando actualizo celdas en esos rangos. Esta puede ser mi imaginación, o puede ser el hecho de que Excel está haciendo llamadas de función adicionales a INDIRECTO.


Aunque el rango con nombre proporciona un método práctico y breve para referirse a las celdas objetivo, ¿no podría usar la INDIRECTfunción por sí solo?
Iszi

@Iszi Sí, creo que sí. Sin embargo, como usted dice, los rangos con nombre son convenientes, y a menudo me encuentro refiriéndome al mismo rango de celdas en varios lugares a lo largo de un libro de trabajo. Trato de mantener los rangos lo más pequeños posible, por razones de rendimiento, y solo los cambio cuando es necesario, por lo que usar un rango con nombre significa que solo necesito cambiarlo en un lugar.
John Bensin

@Iszi ¿Terminaste usando este método? Si se encuentra con dificultades o inconvenientes que no mencioné, avíseme o edítelos en la respuesta. Utilizo esta estrategia en suficientes lugares que no quiero que algo vuelva para atormentarte a ti o a mí en el futuro.
John Bensin

Todavía no he podido implementarlo, pero probablemente lo haré la próxima vez que me encuentre con este problema. Te avisaré si hay algún problema.
Iszi

99
Intenté usar el rango con nombre en la columna "Se aplica a" del Administrador de reglas de formato condicional, pero el rango con nombre se expande cuando presiono "Aceptar" o "Aplicar". ¿Lo estoy haciendo mal?
Mihai Alexandru Bîrsan

2

Descubrí que las reglas son muy fáciles de romper, pero aquí hay algo que puedes probar que no parece romper ninguna regla.

Puede cambiar el texto dentro de las celdas. Si necesita agregar una fila, agregue sus datos al final de su tabla y vuelva a ordenarlos. Si necesita eliminar una fila, solo elimine el texto / números, luego vuelva a ordenar la tabla.

Esto funciona para mí cuando tengo un formato condicional que se aplica a las columnas, y generalmente configuro el formato para toda la columna, por ejemplo. $ F: $ F. Todavía debería funcionar si está formateando para un rango parcial, solo asegúrese de que cuando haya terminado de agregar / eliminar y recurrir a que todos los datos que desea formatear aún estén dentro de sus parámetros de rango originales.

También es una gran frustración para mí.

Espero que esto ayude.


1

No soy TAN seguro y enfrento el mismo problema con frecuencia.

Yo diría que el campo 'Aplicar a' en el panel de Formato condicional (CF) SIEMPRE funcionará dinámicamente. Por lo tanto, SIEMPRE convertirá cualquier referencia al formato =$A$1:$A$50.

Es un dolor.


No lo hace, incluso cuando uso declaraciones explícitas o variables ($ o no $).
Paul

1

Descubrí que usar la INDIRECTfunción y la ROWfunción en la regla de Formato condicional elimina el problema de que Excel cree nuevas reglas y cambie el rango.

Por ejemplo, quería agregar una línea entre filas en mi hoja de cálculo de registro de la chequera cuando el mes cambiaba de una fila a la siguiente. Entonces, mi fórmula en la regla CF es:

=MONTH(INDIRECT("C"&ROW()))<>MONTH(INDIRECT("C"&ROW()-1))

donde la columna C en mi hoja de cálculo contiene la fecha. No tuve que hacer nada especial para el rango (no tuve que definir un nombre de rango, etc.).

Entonces, en el ejemplo del póster original, en lugar de "A1" o "A $ 1" en la regla CF, use:

INDIRECT("A"&ROW())

0

He experimentado un problema muy similar. He hecho algunas macros para agregar filas y copiar fórmulas, y luego ajustar columnas y tamaños de fila para formatear la apariencia de la hoja. Descubrí que este problema ocurre en una de dos ocasiones.

1) Cuando algo de DENTRO del "aplica a" se corta / pega fuera de este rango.

2) Cuando hay celdas combinadas dentro de "aplica a", y cualquiera de las filas o columnas se ajusta.

Aparece durante el problema de celda combinada, que Excel tiene que desmantelar todo, recalcular su aplicación condicional, ajustar todas las celdas (agregar o eliminar filas o lo que no) y luego volver a fusionarlas. Es invisible para nosotros, pero así parece ser cómo se aplica.

Pensamos que podría ayudarnos a llegar a la solución en esto.

-T


0

Tengo una solución simple para esto.

Simplemente muévase a una celda que esté dentro del rango (la que no está rota del Rango), haga clic en Copiar formato y luego pegue en toda la columna. Nuevamente mostrará Donde se ha roto, solo necesita hacer un pintor de formato a la celda que ha roto el rango. Ahora, esto también puede parecer un poco largo, solo puede construir una macro simple para esto.


0

En la fórmula de Formato condicional, use R1C1notación con INDIRECTfunción:
Ejemplo 1:

If same row column A = 1 ...

=IF($A1=1,1,0) becomes 
=IF(INDIRECT("RC1",FALSE)=1,1,0)

Ejemplo 2:
If same row column A = 2 AND next row column A = 3...

=IF(AND(($A1=2),($A2=3)),1,0) becomes
=IF(AND((INDIRECT("RC1",FALSE)=2),(INDIRECT("R[1]C1",FALSE)=3)),1,0)

0

Si el caso de uso es generar una hoja de cálculo de informe, esto debería funcionar bien:


Puede omitir la excesiva utilidad de Excel con un par de pasos de configuración únicos, si también está dispuesto a realizar una actualización simple de los datos finales después de hacer toda la entrada de datos.

Asumiendo que sus datos están organizados normalmente (en filas):

  1. Ingrese todos sus datos en una sola hoja. Para este tutorial nombraré la hoja Input. No le aplique ningún formato condicional. Siéntase libre de cambiar los valores al contenido de su corazón (por ejemplo, eliminar / insertar / copiar / pegar)
  2. Cree otra hoja vacía y asígnele el nombre que desee (por ejemplo Output). Copie manualmente el formato global, como el ancho de columna y el formato del encabezado (no el contenido de los encabezados, solo el formato).
  3. Reemplace $A$1en la siguiente fórmula con la ubicación del inicio de su fila de encabezado, luego copie en todas las columnas y filas que desea generar: =IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") (la IF(LEN(...)>0,...,"")declaración es necesaria porque Excel también determina de manera útil los tipos de datos para usted y 0, de lo contrario, los usa para celdas vacías, y los -1términos provienen de la semántica offset versus ordinal)
  4. Aplicar formato condicional a la Outputhoja.

Esto copia su Inputhoja de datos a la Outputhoja sin ninguna referencia de celda que Excel automáticamente desmenuzaría para que pueda definir con confianza su formato condicional en la Outputhoja.

Solo tiene que extender manualmente el rango al que se aplica la fórmula en la Outputhoja a medida que Inputcambia el tamaño de sus datos.

Le sugiero que evite fusionar las celdas.


PD: esta pregunta se ha formulado en numerosas ocasiones (también se aplica en las Hojas de cálculo de Google, que es un clon de Excel), por lo que puede encontrar una mejor solución para su caso de uso al consultarlas:

  1. Fragmentación de formato condicional de Excel
  2. (este) ¿Cómo evito que las fórmulas y rangos de formato condicional cambien automáticamente?
  3. Conservar el formato condicional en cortar y pegar
  4. Excel: ¿cómo aplicar permanentemente el formato condicional a toda la hoja de cálculo?
  5. ¿Por qué Excel está descifrando mi formato condicional?

0

Si pega sin formato ( Paste > Paste Special > Unicode Texto similar), el formato especial no se copiará y, como tal, el rango "Se aplica a" no debería cambiar.

Puede eliminar filas / columnas, pero si las inserta, el rango "Se aplica a" se dividirá.

Extiende el área seleccionando la última fila / columna y "copiar-arrastrar" en el cuadrado pequeño en la parte inferior izquierda del "cursor". De esta manera, el rango "Aplicar a" debe permanecer intacto. (Tenga en cuenta que esto no extenderá ninguna fórmula en filas o columnas como lo hace insertar).

Sin embargo, es un dolor total recordar pegar sin formato, etc. Normalmente no lo hago.

A veces también defino un nombre para el área que quiero formatear. No se usará en la regla, pero puede limpiar la regla eliminando todas las reglas excepto una y usar el nombre del área en la sección "Se aplica a".

Lo probé en una Mac con Excel 16.3 (creo que Office 2016 ... hmm).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.