Wie kann ich die bedingte Formatierung für eine bestimmte Zelle festlegen, die vom Wert einer anderen Zelle abhängt?


69

In meinem Beispiel möchte ich Spalte B-Zellen bedingt formatieren. Die mit x gekennzeichneten sollten entsprechend dem Wert in Spalte A formatiert werden (im Beispiel ist der Wert 1):

A | B
1 | x
2 | 
3 | 
1 | x
1 | x
4 | 
8 |

// x can be any value and is here merely to mark the cell that should be formatted

WICHTIGER HINWEIS 2014 : Die bedingte Formatierung basierend auf einer Formel, die möglicherweise andere Zellen enthält, ist jetzt in Google Sheets möglich und funktioniert sehr ähnlich wie Excel-Tabellen. Diese Antwort erklärt die Verwendung.


3
Da Sie diesen Hinweis für 2014 hinzugefügt haben, ziehen Sie bitte in Betracht, das Häkchen auf eine Antwort zu setzen, die den modernen Ansatz beschreibt.

Antworten:


50

Komplexe bedingte Formatierungen können in Google Spreadsheets mithilfe von Google Apps Script erzielt werden. Sie könnten beispielsweise eine Funktion schreiben, die die Hintergrundfarbe einer gesamten Zeile basierend auf dem Wert in einer ihrer Zellen ändert, was meines Erachtens mit dem Menü "Farbe mit Regeln ändern" nicht möglich ist. Möglicherweise möchten Sie Trigger für diese Funktion festlegen, z. B. "On Edit", "On Open" und "On Form Submit".

Dokumentation zur Funktion setBackgroundRGB ()

UPDATE: Hier ist ein Google Apps Script-Beispiel zum Ändern der Hintergrundfarbe einer gesamten Zeile basierend auf dem Wert in Spalte A. Wenn der Wert positiv ist, verwenden Sie Grün. Wenn leer, weiß. Ansonsten rot. Zeigen Sie die Ergebnisse in dieser öffentlichen Google-Tabelle an . (Sie müssen angemeldet sein, damit das Skript ausgeführt werden kann. Ohne Anmeldung werden jedoch weiterhin Ergebnisse angezeigt.)

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var endRow = sheet.getLastRow();

  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}

function colorRow(r){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 3);

  var data = dataRange.getValues();
  var row = data[0];

  if(row[0] === ""){
    dataRange.setBackgroundRGB(255, 255, 255);
  }else if(row[0] > 0){
    dataRange.setBackgroundRGB(192, 255, 192);
  }else{
    dataRange.setBackgroundRGB(255, 192, 192);
  }

  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  var r = event.source.getActiveRange().getRowIndex();
  if (r >= 2) {
    colorRow(r);
  }
}

function onOpen(){
  colorAll();
}

Um die Umstellung zu erleichtern, müssen Sie


In Zeile 13 ist ein Fehler aufgetreten: var dataRange = sheet.getRange (r, 1, 1, 3); Wenn ich dieses Skript verwenden möchte, um eine Zeile nach einem bestimmten Namen (z. B. David) einzufärben, wie würde ich es ändern? Und ich würde wahrscheinlich die Schriftart anstelle des Hintergrunds ändern: setFontColor Wie führe ich das Skript in meiner Tabelle aus? Thanks

2
Der Link zum Beispiel ist nicht mehr gültig. Wie BENUTZEN Sie dieses Skript, wenn es erstellt wurde? Das fehlt in dieser Antwort.
Daniel Williams

3
Es gibt jetzt eine einfachere Option für die häufigsten Anwendungsfälle, die in meiner Antwort unten beschrieben sind.
Sam Brightman

1
Google Spreadsheet-Link ist leider defekt. Wäre schön eine kurze Beschreibung zu haben, wie man Skripte benutzt / aktiviert. Trotzdem klappt die tolle Antwort einfach. :)
Brimborium

19

Mit den neuen Google Sheets können Sie dies tun, wie hier beschrieben . Sie müssen zuerst die neuen Tabellen in Ihren Google-Treibereinstellungen aktivieren, wie im Artikel beschrieben. Dann können Sie 'Benutzerdefinierte Formel ist' aus den Optionen für die bedingte Formatierung auswählen und eine beliebige Formel eingeben (vergessen Sie nicht, das =Präfix hinzuzufügen !). Zellreferenzen ohne $Präfixe werden automatisch angepasst, wenn sie wie erwartet auf Bereiche angewendet werden.

Es scheint, dass die Unterstützung für die Migration von alt nach neu fehlt - sie gilt nur für neue Arbeitsblätter, und ich stellte fest, dass nur Werte von einem zum anderen kopiert werden konnten. Das Kopieren eines gesamten Blatts ist möglicherweise eine Option.


1
Vielen Dank für den Hinweis. Es funktioniert genau so, wie ich es will.
Robert Koritnik

Zu diesem Zeitpunkt wurden die meisten alten Tabellenkalkulationen auf die neuen Google Sheets migriert, sodass der Hinweis zur Unterstützung der Migration veraltet ist.
Rubén,

2

Ich habe diese Web-App, Color Code + , mit Apps-Script geschrieben, um die meisten grundlegenden Anforderungen an die bedingte Formatierung abzudecken. Throw in einigen Regeln und es wird ausspucken Code , die Sie dann in Ihrer Tabelle einfügen, unter ExtrasScript - Editor ... . ( Hilfethema in Google-Foren.)


1

Die bedingten Formatierungsregeln von Google Sheets sehen folgendermaßen aus, wenn Sie eine bedingte Formatierung mit rotem Hintergrund durchführen möchten, wenn die Summe in zwei Zellen von der in der dritten Zelle abweicht:

Bedingte Formatregeln für Google Sheets mit einer Farbe und einer benutzerdefinierten Formel


0

Bedingte Formatierung - benutzerdefinierte Formel

range 2:227

= if($i:$i = "Duplicate",True,False)

Wählen Sie die Farbe aus, in der die Zeile hervorgehoben werden soll.


0

(Feb 2017) Wie bereits in einer anderen Antwort erwähnt, können Benutzer in Google Sheets die bedingte Formatierung jetzt direkt über die Benutzeroberfläche hinzufügen , unabhängig davon, ob es sich um ein Desktop- / Laptop-, Android- oder iOS-Gerät handelt. Der Rest dieser Antwort richtet sich jedoch in erster Linie an Entwickler, da Sie Apps für die bedingte Formatierung schreiben können.

Mit der Google Sheets API v4 (und neuer) können Entwickler jetzt Anwendungen schreiben, die CRUD-bedingte Formatierungsregeln enthalten. Schauen Sie sich die Führung und Proben Seiten für weitere Details sowie die Referenz docs (Suche nach {add,update,delete}ConditionalFormatRule). Das Handbuch enthält dieses Python-Snippet (unter der Annahme einer Datei-ID von SHEET_IDund SHEETSals API-Service-Endpunkt):

myRange = {
    'sheetId': 0,
    'startRowIndex': 1,
    'endRowIndex': 11,
    'startColumnIndex': 0,
    'endColumnIndex': 4,
}

reqs = [
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {
                    'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
                },
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
]

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
        body={'requests': reqs}).execute()

Zusätzlich zu Python unterstützen Google-APIs eine Vielzahl von Sprachen , sodass Sie über Optionen verfügen. Das Codebeispiel formatiert jedenfalls ein Arbeitsblatt (siehe Abbildung unten) so, dass diejenigen, die jünger als der Median sind, hellrot hervorgehoben werden, während die Daten derjenigen, die über dem Median liegen, in roter Schrift dargestellt werden.

Beispiel für eine bedingte Formatierung

HINWEIS: Meine Antwort hier ist identisch mit der auf SO für diese Frage, mit der Ausnahme, dass ich den PSA fallen ließ, da er nicht an einem Ort mit mehr als 1 Wohnort leben muss.


Auch auf diese Frage gibt es mehrere Antworten. Auf welche "andere Antwort" bezieht sich diese Antwort? (: Auf der anderen Seite, während die Leute, die zu dieser Seite kommen, Code schreiben könnten, denke ich, dass die meisten von ihnen dies als "Endbenutzerentwicklung" tun, wie in benutzerdefinierten Funktionen. Ich bin mir nicht sicher, ob Begriffe wie CRUDDie meisten von ihnen wissen, dass sie alle zusätzlichen Details, die in dieser Antwort enthalten sind, hilfreich finden könnten.
Rubén

0

Um die Besonderheiten des Q in "neuen" Blättern zu behandeln, schlage ich vor, alle bedingten Formatierungen von B: B zu entfernen, Spalte B auszuwählen und eine benutzerdefinierte Formel anzuwenden :

=A1=1

mit Formatierung nach Wahl und Done.


0

Wählen Sie beim Bearbeiten der bedingten Formatierung Benutzerdefinierte Formel aus und verwenden Sie Folgendes:

=if(A1 = 1 , true)

Wählen Sie Ihre Farben und Sie sind fertig.


-1

Bearbeiten Sie als Antwort auf die Klärung der Frage:

In Ihrem Google Spreadsheet-Fenster gibt es ein Menü Format mit der Option "Farbe mit Regeln ändern". Dies ist so technisch wie die bedingte Formatierung von Google Spreadsheet. Soweit ich das beurteilen kann, gibt es keine Möglichkeit, eine Zelle basierend auf dem Wert einer anderen zu färben. Google lässt Sie keine Formeln für andere Zellen eingeben.

Wenn Sie keine anderen Daten in Spalte B einfügen, können Sie immer festlegen, dass alle Daten in Spalte B gleich Spalte A sind. Verwenden Sie dann die Option "Farbe mit Regeln ändern", um alle Zellen mit dem Wert 1 mit denselben Farben zu färben. roter Hintergrund und roter Text, wenn der Wert 1 ist, weißer Hintergrund und weißer Text, wenn er nicht ist, wodurch der Wert in Spalte B effektiv ausgeblendet wird. So erhalten Sie das gewünschte Erscheinungsbild.

In Excel, Sie können tun , was Sie wollen. Am Beispiel Ihrer Daten habe ich B1 bedingt formatiert, wenn diese Formel zutrifft:

=IF(A1=1,true,false)

und zog dann die Formatierung nach unten, wodurch nur die Zellen in B hervorgehoben wurden, bei denen es sich um einen Nachbarn in Spalte A handelt, der 1 entspricht.

Excel kann es, aber nicht Google


Ursprüngliche Antwort

Ich bin nicht sicher, ob Sie dies in 2 Spalten tun können, aber ich weiß, dass Sie es in 3 tun können:

 A  |  B  |  C
----------------
 1  |  f  |  x

In der Spalte B können Sie anhand der IFFormel sehen, ob in der entsprechenden Spalte C ein x steht:

=IF(C1="x",A1,"") 

Die IFFormel besteht aus 3 Teilen - dem Test, dem then- Wert und dem else- Wert. Im obigen Beispiel prüft die Formel, ob sich xin der Spalte C ein befindet. Wenn dies der Fall ist, wird der Wert von A1 eingegeben, andernfalls wird ein Leerzeichen eingegeben. Es spielt keine Rolle, ob xes sich um Groß- oder Kleinbuchstaben handelt.

Sobald Sie diese Formel oben in Ihre Liste eingegeben haben, können Sie sie mit der Ziehfunktion für den Rest Ihrer Liste nach unten ziehen. Bewegen Sie bei blau hervorgehobener Zelle die Maus über das Quadrat in der unteren rechten Ecke, bis der Cursor zu einem Fadenkreuz wird. Klicken und halten Sie dann beim Ziehen nach unten, um die Formel in die Zellen darunter zu kopieren.


1
Ich denke du hast mich falsch verstanden. Die Frage betrifft die bedingte Formatierung und nicht das Platzieren von Werten in Zellen.
Robert Koritnik

1
Zu diesem Zeitpunkt ist diese Antwort veraltet. Siehe Anwenden bedingter Formatierungsregeln - Hilfe für Text & Tabellen-Editoren
Rubén,
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.