Wie behalte ich Formeln und Bereiche für die bedingte Formatierung davon ab, sich automatisch zu ändern?


24

Ich habe festgestellt, dass Formeln und Bereiche für die bedingte Formatierung automatisch angepasst werden, wenn Sie Daten in einer Tabelle kopieren, löschen oder verschieben. Das ist zwar eine nette Idee, aber es neigt dazu, die Dinge für mich auf seltsame Weise zu zerbrechen.

Um dies zu vermeiden, habe ich versucht, Regeln zu schreiben, die für die gesamte Tabelle gelten, und Spaltenüberschriften abgeschlüsselt, um die zu überprüfenden Daten hervorzuheben.

Beispiel: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))angewendet auf=$1:$1048576

Selbst wenn die Regel explizit auf das gesamte Blatt angewendet wurde, passte sie sich automatisch an (und brach dabei auf seltsame Weise ab), während ich im Blatt arbeitete.

Wie kann ich das vermeiden?


Vielleicht können Sie einfach nicht die gesamte Tabelle verwenden ... Können Sie ein konkreteres Beispiel dafür geben, was Sie tun?
Doktoro Reichard

Könnten Sie vielleicht einen Screenshot haben und angeben, welche Bereiche beschädigt werden?
Jerry

@ JohnBensin Das hört sich so an, als ob es genau das ist, wonach ich gesucht habe. Ich werde versuchen, mich das nächste Mal daran zu erinnern.
Iszi

@Iszi Ich habe es als Antwort hinzugefügt. Ich bin mir sicher, dass Sie wissen, wie man benannte Bereiche hinzufügt, aber ich beziehe Details in die Antwort für zukünftige Besucher ein (und weil ich mich nie erinnern konnte, als ich zum ersten Mal Excel gelernt habe).
John Bensin

Ein Artikel über genau das, was schief geht: Excel 2010 bedingte Formatierung Albtraum . Sie haben es sicher noch schlimmer gemacht, als sie versuchten, es ein bisschen besser zu machen ...
RomanSt

Antworten:


7

Wenn ich einen Bereich benötige, der sich unter keinen Umständen ändern sollte , einschließlich Verschieben, Einfügen und Löschen von Zellen, habe ich einen benannten Bereich und die INDIRECTFunktion verwendet.

Wenn ich zum Beispiel möchte, dass ein Bereich immer auf Zellen angewendet wird A1:A50, habe ich über den Namensmanager einen benannten Bereich definiert:

benannten Bereich hinzufügen

Fügen Sie im Namensmanager einen neuen Bereich hinzu (klicken Sie auf Neu), und geben Sie im Feld Verweist auf: mit der Funktion INDIREKT den gewünschten Zellenbereich an, z . B. =INDIRECT("A1:A50")oder =INDIRECT("Sheet!A1:A50"). Da es sich bei dem Bereich technisch gesehen nur um ein Textargument handelt, wird Excel durch keine Neuanordnung von Zellen aktualisiert.

Dies funktioniert auch in mindestens Excel 2010 und Excel 2013. Obwohl mein Screenshot aus dem Jahr 2013 stammt, habe ich 2010 in der Vergangenheit genau diese Technik angewendet.

Vorbehalte

  1. Denken Sie daran, dass diese Invarianz Sie auch stolpern kann. Wenn Sie beispielsweise den Namen des Blatts ändern, wird der benannte Bereich unterbrochen.

  2. Ich habe einen geringfügigen Leistungseinbruch festgestellt, wenn ich diese Strategie für eine erhebliche Anzahl von Zellen verwende. Ein Modell, das ich bei der Arbeit verwende, verwendet diese Technik mit benannten Bereichen, die sich über mehrere tausend unterschiedliche Zellbereiche erstrecken, und Excel fühlt sich ein wenig träge an, wenn ich Zellen in diesen Bereichen aktualisiere. Dies kann meine Vorstellung sein, oder es kann die Tatsache sein, dass Excel zusätzliche Funktionsaufrufe für INDIRECT ausführt.


Obwohl der genannte Bereich eine praktische Kurzform für die Bezugnahme auf die Zielzellen darstellt, können Sie die INDIRECTFunktion nicht einfach alleine verwenden?
Iszi

@ Iszi Ja, ich glaube schon. Wie Sie jedoch sagen, sind benannte Bereiche praktisch, und ich beziehe mich häufig an mehreren Stellen in einer Arbeitsmappe auf denselben Zellbereich. Ich versuche, die Bereiche aus Leistungsgründen so klein wie möglich zu halten und sie nur bei Bedarf zu ändern. Wenn ich also einen benannten Bereich verwende, muss ich ihn nur an einer Stelle ändern.
John Bensin

@Iszi Hast du diese Methode überhaupt angewendet? Wenn Sie auf Fallstricke oder Nachteile stoßen, die ich nicht erwähnt habe, lassen Sie es mich wissen oder bearbeiten Sie sie in der Antwort. Ich verwende diese Strategie an genügend Stellen, an denen ich nicht möchte, dass etwas zurückkommt, um Sie oder mich zu verfolgen.
John Bensin

Ich habe es noch nicht implementiert, werde es aber wahrscheinlich tun, wenn ich das nächste Mal auf dieses Problem stoße. Ich werde Sie informieren, wenn es irgendwelche Probleme gibt.
Iszi

9
Ich habe versucht, den benannten Bereich in der Spalte "Gilt für" des Managers für bedingte Formatierungsregeln zu verwenden, aber der benannte Bereich wird erweitert, wenn ich auf "OK" oder "Übernehmen" drücke. Mache ich es falsch?
Mihai Alexandru Bîrsan

2

Ich habe festgestellt, dass Regeln sehr leicht zu brechen sind, aber hier ist etwas, das Sie ausprobieren können, ohne dass es gegen Regeln zu verstoßen scheint.

Sie können Text in Zellen ändern. Wenn Sie eine Zeile hinzufügen müssen, fügen Sie Ihre Daten am Ende Ihrer Tabelle hinzu und sortieren Sie sie neu. Wenn Sie eine Zeile löschen müssen, entfernen Sie nur den Text / die Zahlen und sortieren Sie die Tabelle neu.

Dies funktioniert für mich, wenn ich eine bedingte Formatierung für Spalten habe und normalerweise die Formatierung für die gesamte Spalte festlege, z. $ F: $ F. Wenn Sie für einen Teilbereich formatieren, sollte dies weiterhin funktionieren. Stellen Sie jedoch sicher, dass alle zu formatierenden Daten nach dem Hinzufügen / Entfernen und erneuten Speichern noch in den ursprünglichen Bereichsparametern enthalten sind.

Es ist auch eine große Frustration für mich.

Ich hoffe das hilft.


1

Ich bin nicht SO sicher und ich vor dem gleichen Problem , das häufig.

Ich würde sagen, dass das Feld "Anwenden auf" im Bedienfeld "Bedingte Formatierung" IMMER dynamisch funktioniert. Es werden also IMMER alle Referenzen in das Format konvertiert =$A$1:$A$50.

Es ist nervig.


Es funktioniert nicht, selbst wenn ich explizite oder variable Deklarationen ($ oder no $) verwende.
Paul

1

Ich fand heraus, dass die Verwendung der INDIRECTFunktion und der ROWFunktion in der Regel für bedingte Formatierung das Problem beseitigt, dass Excel neue Regeln erstellt und den Bereich ändert.

Zum Beispiel wollte ich eine Zeile zwischen den Zeilen in meiner Scheckheftregister-Tabelle einfügen, wenn sich der Monat von einer Zeile zur nächsten änderte. Meine Formel in der CF-Regel lautet also:

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

wo Spalte C in meiner Tabelle das Datum enthält. Ich musste nichts spezielles für den Bereich tun (ich musste keinen Bereichsnamen usw. definieren).

Verwenden Sie also im Beispiel des ursprünglichen Posters anstelle von "A1" oder "A $ 1" in der CF-Regel:

INDIRECT("A"&ROW())

0

Ich habe ein sehr ähnliches Problem erlebt. Ich habe ein paar Makros erstellt, um Zeilen hinzuzufügen und Formeln nach unten zu kopieren, und dann Spalten und Zeilengrößen anzupassen, um zu formatieren, wie das Blatt aussieht. Ich habe festgestellt, dass dieses Problem in einem von zwei Fällen auftritt.

1) Wenn etwas von INNEN das "trifft zu" außerhalb dieses Bereichs ausgeschnitten / eingefügt wird.

2) Wenn in "trifft zu" verbundene Zellen vorhanden sind und eine der Zeilen oder Spalten angepasst wird.

Während der Ausgabe der zusammengeführten Zellen muss Excel die Zusammenführung aufheben, die bedingte Anwendung neu berechnen, alle Zellen anpassen (Zeilen hinzufügen oder löschen oder was nicht) und sie dann wieder zusammenführen. Es ist unsichtbar für uns, aber so scheint es anzuwenden zu sein.

Dachte, das könnte uns dabei helfen, die Lösung zu finden.

-T


0

Ich habe eine einfache Lösung dafür.

Bewegen Sie sich einfach zu einer Zelle, die sich im Bereich befindet (die nicht unter dem Bereich liegt), klicken Sie auf Format Painter und fügen Sie sie in die gesamte Spalte ein. Wieder wird angezeigt, wo es kaputt ist. Sie müssen nur einen Format-Painter für die Zelle ausführen, die den Bereich beschädigt hat. Nun, auch dies mag etwas langwierig erscheinen, Sie können einfach ein einfaches Makro dafür erstellen.


0

Verwenden Sie in der Formel für bedingte Formatierung die R1C1Notation mit der INDIRECTFunktion:
Beispiel 1:

If same row column A = 1 ...

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

Beispiel 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

Wenn der Anwendungsfall darin besteht, eine Berichtstabelle zu generieren, sollte dies gut funktionieren:


Sie können die übermäßige Hilfsbereitschaft von Excel mit ein paar einmaligen Einrichtungsschritten umgehen , wenn Sie auch bereit sind, eine einfache Aktualisierung der endgültigen Daten manuell durchzuführen, nachdem Sie alle Daten eingegeben haben.

Angenommen, Ihre Daten sind normal angeordnet (in Zeilen):

  1. Geben Sie alle Ihre Daten in ein Blatt ein. Für dieses Tutorial werde ich das Blatt benennen Input. Wenden Sie keine bedingte Formatierung an. Sie können Werte nach Herzenslust verschieben (z. B. Löschen / Einfügen / Kopieren / Einfügen).
  2. Erstellen Sie ein weiteres leeres Blatt und benennen Sie es wie Sie möchten (z Output. B. ). Kopieren Sie manuell Ihre globale Formatierung wie Spaltenbreiten und Formatierung der Überschriften (nicht den Inhalt der Überschriften, nur die Formatierung).
  3. Ersetzen Sie $A$1in der folgenden Formel die Position des Anfangs Ihrer Kopfzeile und kopieren Sie dann alle auszugebenden Spalten und Zeilen: =IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") (Die IF(LEN(...)>0,...,"")Anweisung ist erforderlich, da Excel auch Datentypen für Sie hilfreich ermittelt und 0ansonsten für leere Zellen verwendet die -1Terme stammen aus der Versetzung versus Ordinalsemantik
  4. Wenden Sie die bedingte Formatierung auf das OutputBlatt an.

Dadurch wird Ihr InputDatenblatt auf ein OutputBlatt kopiert , ohne dass Zellverweise vorhanden sind, die von Excel automatisch abgeschlachtet werden, sodass Sie die bedingte Formatierung auf dem OutputBlatt sicher definieren können .

Sie müssen lediglich den Bereich, auf den die Formel im Arbeitsblatt angewendet wird, manuell erweitern Output, wenn sich die Größe Ihrer InputDaten ändert.

Ich schlage vor, dass Sie das Zusammenführen von Zellen vermeiden.


PS Diese Frage wurde mehrmals gestellt (sie gilt auch für Google Sheets, einen Klon von Excel), sodass Sie möglicherweise eine bessere Lösung für Ihren Anwendungsfall finden, indem Sie sie durchgehen:

  1. Excel-bedingte Formatierungsfragmentierung
  2. (diese hier) Wie behalte ich Formeln und Bereiche für die bedingte Formatierung davon ab, sich automatisch zu ändern?
  3. Beibehalten der bedingten Formatierung beim Ausschneiden und Einfügen
  4. Excel: Wie kann eine bedingte Formatierung dauerhaft auf die gesamte Tabelle angewendet werden?
  5. Warum werden meine bedingten Formatierungen in Excel abgeschlachtet?

0

Wenn Sie ohne Format ( Paste > Paste Special > Unicode Textoder ähnlichem) einfügen, wird die spezielle Formatierung nicht kopiert, und als solche sollte sich der Bereich "Gilt für" nicht ändern.

Sie können Zeilen / Spalten löschen, aber wenn Sie sie einfügen, wird der Bereich "Gilt für" aufgeteilt.

Sie erweitern den Bereich, indem Sie die letzte Zeile / Spalte auswählen und auf das kleine Quadrat unten links neben dem "Cursor" "Kopieren-Ziehen" klicken. Auf diese Weise sollte der Bereich "Anwenden auf" erhalten bleiben. (Beachten Sie, dass dies keine Formeln in Zeilen oder Spalten erweitert, wie dies beim Einfügen der Fall ist.)

Es ist jedoch ein totaler Schmerz, sich daran zu erinnern, ohne Format usw. einzufügen, was ich normalerweise nicht tue.

Manchmal definiere ich auch einen Namen für den Bereich, den ich formatieren möchte. Es wird in der Regel nicht verwendet, aber Sie können die Regel bereinigen, indem Sie alle Regeln bis auf eine entfernen und den Bereichsnamen im Abschnitt "Gilt für" verwenden.

Ich habe auf einem Mac mit Excel 16.3 getestet (ich denke, Office 2016 ... hmm).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.