Festlegen der Farben von Zellen in Excel beim Ändern der Werte dieser Zellen

462
Jacob

Hier ist ein Beispiel von 4 Zellen in meiner Arbeitsmappe.

26 99 2 1 

Die Arbeitsmappe ist nach den Regeln gefärbt 100 = rot 0 = gelb, wobei Dinge, die näher an 0 liegen, mehr gelb und Dinge, die näher an 100 liegen, mehr rot sind (Dies wird durch eine bedingte Formatierungsregel definiert, die Farben basierend auf dem Wert zuordnet).

In diesem Beispiel wäre 99 sehr rot, 1 und 2 wären sehr gelb und 26 hätte einen Orangeton.

Ich möchte die Farbe der Zellen beibehalten, aber die Werte in den Zellen ändern. In diesem Beispiel möchte ich, dass sie sind

E=0.0,Q=26 E=0.0,Q=99 E=2.10e-11,Q=2 E=1.02e-08,Q=1 

(Beachten Sie, dass die Werte auf der rechten Seite von q mit der ersten Matrix identisch sind.)

Aufgrund der bedingten Formatierungsregel verschwinden meine Farben, wenn ich neue Werte in sie einfügen.

2

3 Antworten auf die Frage

2
Jason Clement

Sie können immer 100 Formatbedingungen hinzufügen, basierend auf dem Wert nach dem Q=in E=0.0,Q=99. Hier ist ein Makro, das das für Sie mit den von Ihnen ausgewählten Zellen erledigt, indem Sie jeden leeren Zellenwert direkt mit 1 bis 100 vergleichen oder mit dem Wert nach dem Q=ersten Vergleich, wenn dieser erste Vergleich einen Fehler ergibt.

Sie können das Makro nach dem Ausführen löschen, damit Sie die Datei nicht als XLSM speichern müssen. Entfernen Sie das Kommentarzeichen für die Selection.FormatConditions.DeleteZeile, indem Sie den Apostroph entfernen, wenn Sie auch die aktuellen Formatierungsbedingungen entfernen möchten.

Dies setzt voraus, dass Ihre Zahl immer eine ganze Zahl zwischen 1 und 100 ist (entweder als bloßer Zellenwert oder nach dem Wert Q=). Bei Dezimalwerten funktioniert es nicht.

Sub FormatMe() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'Selection.FormatConditions.Delete Dim addr As String addr = Replace(Selection.Cells(1).Address, "$", "") For i = 1 To 100 With Selection.FormatConditions.Add(xlExpression, Formula1:= _ "=OR(" & addr & " = " & i & ", IFERROR(RIGHT(" & addr & _ ", LEN(" & addr & ") - FIND(""Q"", " & addr & ", 2) - 1) = """ & i & """, FALSE))") .Interior.Color = RGB(255, 255 - Int(i / 100 * 255), 0) End With Next Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 
Während dies die letzte bekannte (aktuelle) bedingte Farbe nicht "fixiert" (einfriert), ist dies vermutlich eine bessere Lösung als der Versuch, die letzte bekannte Farbe einzufrieren. Arjan vor 6 Jahren 0
0
Guido Hoogslag
  • Annahme : Sie möchten die bedingte Formatierung (und keine VBA) verwenden.
  • Annahme : Die Zelle, die Sie einfärben möchten, enthält "komplexe" Werte wie "E = 0.0, Q = 26".

  • Antwort : Wählen Sie eine - die bedingte Formatierung von Excel ist nicht intelligent genug, um den Wert "E = 0.0, Q = 26" zu "lesen" und die Zahl 26 zu finden.

    • Die Verwendung Ihrer eigenen Formatierungsformel könnte funktionieren, aber das kann keinen Farbverlauf anwenden, da nur eine Farbe pro Bedingung ausgeführt wird, dh "wenn die Zahl 29 genau diese Farbe ergibt". (Soweit ich weiß - bitte korrigieren Sie mich)
    • Excel konnte automatisch die Zahl 26 aus Ihrer Zelle extrahieren und diese (benachbarte) Zelle formatieren (mithilfe von Zelle F4 =NUMBERVALUE(RIGHT(F4,LEN(F4)-FIND(",",F4)-2)))
  • Mein Vorschlag stellt Ihre Daten auf eine andere Weise dar, verwendet E und Q als Kopfzeile oder etwas und speichert einfach jede Zahl in einer separaten Zelle.

-1
gns100

Verwenden Sie Werte zum Einfügen, damit nur die Zahlen eingefügt werden. Andernfalls wird auch die Formatierung eingefügt.

Es ändert sich immer noch die Farbe. Dies liegt daran, dass die Zellen durch eine Formatierungsregel gefärbt werden. Wenn ich einen dieser Werte manuell von 1 bis 99 ändere, ändert sich der Wert von Gelb in Rot Jacob vor 6 Jahren 0
@ Jakob: Das ist, was bedingte Formatierung tut. Wenn Sie nicht möchten, dass sich die Zellenfarbe ändert, entfernen Sie das bedingte Format und stellen Sie die Zellenfüllung manuell ein, damit sich der Wert nicht ändert. teylyn vor 6 Jahren 0