Excel 2007: Bedingte Formatierung, sodass jede Zeile niedrige Werte in Gelb und hohe Werte in Rot anzeigt

13

Ich habe eine Tabelle mit ca. 300 Zeilen. Jede Zeile hat ungefähr 15 Spalten und jede Zelle enthält einen numerischen Wert. Jede Zeile entspricht einem Produkt.

Ich möchte, dass Excel für jedes Produkt die Zellen mit den höchsten Zahlen in Rot und den niedrigsten Zahlen in Gelb mit einem Farbverlauf für dazwischen liegende Zahlen hervorhebt. Dies passiert, wenn ich eine Zeile auswähle (insbesondere die 15 Zellen in der Zeile, die meine Daten enthalten) und dann auf Bedingte Formatierung> Farbskalen> Rot-Gelb-Farbskala klicke.

Ich habe jedoch 300 Zeilen und es wird zu lange dauern, jede Zeile einzeln auszuwählen und die bedingte Formatierung festzulegen. Wenn ich dagegen den gesamten Bereich auswähle und die bedingte Formatierung anwende, berechnet Excel die Farben auf der Grundlage des gesamten Bereichs, obwohl ich möchte, dass sie zeilenweise berechnet werden. Nehmen Sie zum Beispiel diese Beispieldaten:

1 2 3
4 5 6
7 8 9

Die Ausgabe, die ich möchte, mit Y für Gelb, O für Orange, R für Rot, ist:

Y O R
Y O R
Y O R

Wenn ich jedoch den gesamten Bereich auswähle und die bedingte Formatierung anwende, erhalte ich Folgendes:

Y Y Y
O O O
R R R

Gibt es eine Möglichkeit, dies zu erreichen, ohne es zeilenweise zu tun?

Michael Pavey
quelle
@wizlog: Das stimmt. Der höchste Wert in einer Reihe sollte rot sein, der niedrigste Wert in dieser Reihe sollte gelb sein und die anderen Werte sollten irgendwo dazwischen liegen (je näher der höchste Wert, desto röter).
Michael Pavey
Ich mag diese Frage ... Ich werde sehen, ob ich eine Antwort finden kann ... Es wird wahrscheinlich ein paar Stunden dauern, bis ich wieder helfen kann. Ich hoffe, andere SuperUser-Mitglieder finden rechtzeitig eine Antwort durch ..
wizlog
Ich mag diese Frage auch. Aber ich sehe keine andere Möglichkeit, dies zu erreichen, als ein Makro zu verwenden. Ich hoffe, jemand beweist mir das Gegenteil.
Ellesa

Antworten:

14

Hier ist ein Makro, das ein bedingtes Format für jede Zeile in Ihrer Auswahl erstellt. Dies geschieht, indem das Format der ersten Zeile in JEDE Zeile in der Auswahl kopiert wird (nicht einzeln, sondern einzeln). Ersetzen Sie B1: P1 durch den Verweis auf die erste Zeile in Ihrer Datentabelle.

Sub NewCF()
    Range("B1:P1").Copy
    For Each r In Selection.Rows
        r.PasteSpecial (xlPasteFormats)
    Next r
    Application.CutCopyMode = False
End Sub

Markieren Sie dazu die unformatierten Zeilen in Ihrem Dataset (in meinem Fall B2: P300 ) und führen Sie das Makro aus. Beachten Sie im folgenden Beispiel, dass die maximale Anzahl in den ersten beiden Zeilen 5 bzw. 15 beträgt. Beide Zellen sind dunkelrot .

Ich bin mir aber sicher, dass es eine schnellere Lösung gibt.

Bildbeschreibung hier eingeben

Ellesa
quelle
1
Danke, das hat wunderbar funktioniert. Es ist auch ein großartiges Beispiel für den Wert, um Hilfe zu bitten, wenn ich nicht sicher bin ... Ich war von der Idee, ein Makro zu verwenden, beeindruckt, da ich davon ausgegangen bin, dass ich lernen muss, wie man die bedingte Formatierung von Grund auf neu erstellt. Es ist viel raffinierter, das Makro nur zum Kopieren der vorhandenen Formatierung zu verwenden :)
Michael Pavey
@MichaelPavey Ich bin froh, dass ich helfen konnte! Und willkommen beim Superuser! :)
Ellesa
1
+ 1. Wenn sich jemand interessiert, habe ich dieses Konzept in meinem Blog weiterentwickelt: yoursumbuddy.com/conditional-formatting-per-row-color-scales
Doug Glancy
Es ist lächerlich, dass so etwas nicht als Feature in Excel integriert ist. Ist es so ungewöhnlich, Zeilen auf diese Weise vergleichen zu wollen?
Alex
5

Der einfachste Weg, dies zu erreichen, ist das inkrementelle Kopieren / Einfügen. Formatieren Sie zunächst eine Zeile wie gewünscht. Kopieren Sie dann die Formatierung und fügen Sie sie NUR in eine zweite Zeile ein. Kopieren Sie jetzt BEIDE Zeilen 1 und 2 und fügen Sie die Formatierung in die Zeilen 3 und 4 ein. Fügen Sie es ein paar Mal ein, um 64 oder 128 zu erhalten. Dann können Sie diese kopieren und ihre Formatierung einfügen, und Sie decken exponentiell mehr Gebiet als zuvor ab.

Es ist nicht elegant, und meiner Erfahrung nach werden die Ressourcen, die für die bedingte Formatierung von EAT-Zeilen erforderlich sind, um 2500 Zeilen aufgebraucht.

Ich wünschte nur, es gäbe Logik, die nicht für jede einzelne Zeile ein eigenes Bedingungsformat erstellt und Ressourcen verschlingt ...

Poultron
quelle
Ich denke, das OP sagte: "Allerdings habe ich 300 Zeilen und es wird zu lange dauern, um jede Zeile einzeln auszuwählen und die bedingte Formatierung festzulegen." in der Frage
Prasanna
@ Geflügel, danke! So fügen Sie dies hinzu: Mit Strg / Befehlstaste + Umschalttaste + Nach oben / Nach rechts können Sie alle vorherigen Zeilen und Spalten auswählen, sodass Sie die vorherigen Zeilen nicht zählen müssen. Wenn Sie dann zum Einfügen bereit sind, positionieren Sie den Cursor einfach in der ersten Zelle unter den bereits formatierten Zeilen und nur im speziellen Einfügeformat. Dadurch werden so viele Zeilen abgedeckt, wie kopiert wurden. Strg / Befehlstaste + Umschalttaste + V speichert auch die letzte Spezialpaste, die Sie verwenden möchten, sodass der gesamte Vorgang ziemlich schnell verläuft. Ich habe es gerade für zwei Tabellenkalkulationen mit jeweils 600 Zeilen verwendet.
Oskar Austegard
Ich habe das auf einem Tisch mit ~ 100 Zeilen gemacht und es hat wunderbar funktioniert. Es wurden nur 7 Iterationen von Format Painter benötigt.
mskfisher
0

Ich habe gerade dieses und andere Beispiele dafür über VBA gefunden und es hat mich zum Nachdenken gebracht, und ich habe eine relativ schnelle und schmerzlose Möglichkeit gefunden, dasselbe zu tun, ohne ein Skript zu kennen oder zu kopieren.

Wenden Sie die gewünschte bedingte Formatierung auf die gewünschte Zeile an und markieren Sie dann die gesamte Zeile. Weiter Klicken Sie mit der rechten Maustaste irgendwo entlang des Rahmens (Maus sollte das Verschieben-Symbol sein) und ziehen Sie in die nächste Zeile. Wählen Sie im Kontextmenü "Hierher nur als Format kopieren". Jetzt sollten Sie Ihr Bedingtes Format auf beide Zeilen separat anwenden. Führen Sie dies dann rekursiv aus, mit der Ausnahme, dass Sie jetzt zwei oder mehr Zeilen gleichzeitig auswählen und kopieren können.

Es ist kein One-Shot-Deal wie der obige Code, aber es ist exponentiell schneller als jeweils eine Zeile. Hoffe das hilft.

Chris S
quelle
0

Sie können die Bedingungsformatierung auch auf eine Zeile anwenden. Markieren Sie die Zeile erneut und doppelklicken Sie auf "Format Painter", um sie zu sperren. Verwenden Sie die Abwärtspfeiltaste, um die Bedingung auf andere Zeilen anzuwenden.

Für meine Firma blockiert normalerweise Makro in Excel, so dass dies für mich funktioniert. hoffe es hilft dir auch

Genx
quelle