web-dev-qa-db-fra.com

Comment définir une mise en forme conditionnelle sur une cellule particulière qui dépend de la valeur d'une autre cellule?

Dans mon exemple, j'aimerais formater de manière conditionnelle les cellules de la colonne B. Ceux marqués avec x doivent être formatés en fonction de la valeur dans la colonne A (dans l'exemple, la valeur est 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

REMARQUE IMPORTANTE POUR 2014 : mise en forme conditionnelle basée sur une formule pouvant inclure d'autres Les cellules sont maintenant possibles dans Google Sheets et fonctionnent de manière très similaire au fonctionnement des feuilles de calcul Excel. Cette réponse explique son utilisation.

69
Robert Koritnik

Un formatage conditionnel complexe peut être obtenu dans Google Spreadsheets à l'aide de Google Apps Script. Par exemple, vous pouvez écrire une fonction qui modifie la couleur d'arrière-plan d'une ligne entière en fonction de la valeur de l'une de ses cellules, ce que je ne pense pas possible avec le menu "Modifier la couleur avec des règles". Vous voudrez probablement définir des déclencheurs pour cette fonction, tels que "Sur édition", "Sur ouverture" et "Sur formulaire de soumission".

Documentation sur la fonction setBackgroundRGB ()

UPDATE: Voici un exemple de script Google Apps permettant de modifier la couleur d'arrière-plan d'une ligne entière en fonction de la valeur de la colonne A. Si la valeur est positive, utiliser le vert. Si vide, blanc. Sinon, rouge. Voir les résultats dans ce public Google Spreadsheet . (Vous devrez être connecté pour que le script s'exécute, mais sans vous connecter, vous pouvez toujours voir les résultats).

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();
}

Un séjour sans faille

50
Liam

Le nouvelles fiches Google vous permet de le faire, comme décrit ici . Vous devez d'abord activer les nouvelles feuilles de calcul dans les paramètres de votre pilote Google, comme décrit dans l'article. Vous pouvez ensuite sélectionner "Formule personnalisée" dans les options de mise en forme conditionnelle et entrer n’importe quelle formule (n’oubliez pas d’ajouter le préfixe =!). Les références de cellule sans les préfixes $ sont ajustées automatiquement lorsqu'elles sont appliquées aux plages comme vous le souhaitez.

Il semble que le support pour la migration d'ancien vers le nouveau fasse défaut - il ne s'applique qu'aux nouvelles feuilles et j'ai constaté que seules les valeurs pouvaient être copiées de l'une à l'autre. Copier une feuille entière peut être une option.

19
Sam Brightman

J'ai écrit cette application Web, Code de couleur + , avec Apps-Script, pour couvrir la plupart des besoins de mise en forme conditionnels de base. Ajoutez quelques règles et cela crachera du code que vous pourrez ensuite coller dans votre feuille de calcul, sous Outils Editeur de script ... . ( fil d'aide sur les forums Google.)

2
Bryan P

Les règles de format conditionnel de Google Sheets ressemblent à ceci si vous souhaitez formater de manière conditionnelle avec un arrière-plan rouge si la somme dans deux cellules est différente de celle dans la troisième cellule:

Google Sheets conditional format rules with single color and custom formula

1
ViliusK

Pour aborder les spécificités du Q dans les "nouvelles" feuilles, je suggère d'effacer tout formatage conditionnel de B: B, en sélectionnant ColumnB et en appliquant un la formule personnalisée est sur:

=A1=1

avec formatage de choix et Done.

0
pnuts

Mise en forme conditionnelle - formule personnalisée

range 2:227

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

sélectionnez la couleur sur laquelle vous souhaitez mettre la ligne en surbrillance.

0
Hari R

(février 2017) Comme indiqué dans une autre réponse, Google Sheets permet désormais aux utilisateurs d'ajouter mise en forme conditionnelle directement à partir de l'interface utilisateur, que ce soit sur un ordinateur de bureau/portable, Android ou des appareils iOS. Cependant, le reste de cette réponse est principalement destiné aux développeurs, car vous pouvez écrire des applications "do" à la mise en forme conditionnelle.

Avec l'API v4 de Google Sheets (et plus récente), les développeurs peuvent désormais écrire des applications qui respectent les règles de mise en forme conditionnelle CRUD. Consultez les pages guide et exemples pour plus de détails, ainsi que les documents de référence (recherchez {add,update,delete}ConditionalFormatRule). Le guide présente cet extrait Python (en supposant que l'ID de fichier SHEET_ID et SHEETS soit le point de terminaison du service d'API):

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()

En plus de Python, les API Google prennent en charge une variété de langues , vous disposez donc d'options. Quoi qu'il en soit, cet exemple de code formate une feuille (voir image ci-dessous) de sorte que les plus jeunes par rapport à l'âge médian soient surlignés en rouge clair, tandis que ceux situés au-dessus de la médiane affichent leurs données en rouge.

Conditional formatting example

NOTE: ma réponse ici est identique à celle sur SO pour cette question sauf que j'ai laissé tomber le message d'intérêt public car il n'a pas besoin de vivre à> 1 endroit.

0
wescpy

Lors de la modification de la mise en forme conditionnelle, sélectionnez Formule personnalisée et utilisez les éléments suivants ...

=if(A1 = 1 , true)

Sélectionnez vos couleurs et vous avez terminé.

0
user3246197