8
votes

Formatage conditionnel dans Excel avec C #

J'ai besoin d'appliquer une couleur dans un texte d'une cellule si la valeur n'est pas la même qu'une valeur dans une autre colonne. Quelle serait la meilleure approche pour cela? La façon dont je peux penser est assez chère.

FormatCondition cond = ColumnBRange.FormatConditions.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlNotEqual, ColumnARange);
                cond.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);


1 commentaires

Oui. Besoin d'appliquer la couleur au texte de la cellule en comparant avec la valeur d'une autre colonne. Mais si je traverse comme mentionné dans mon code, il sera assez coûteux en tenant compte des données importantes avec plus de lignes et de colonnes.


3 Réponses :


9
votes

Le code suivant, ajoute une mise en forme conditionnelle à la plage de cellules de D1 à E10

Il compare les valeurs D1 = E1 ou D2 = E2 respectivement. Vous pouvez définir la couleur de la police ou la couleur remplir sur l'objet FormatCondition. P>

FormatCondition format =(FormatCondition)( targetSheet.get_Range("D1:E10",
                Type.Missing).FormatConditions.Add(XlFormatConditionType.xlExpression,
                                                   XlFormatConditionOperator.xlEqual,
                                                   "=$D1=$E1", 
                                                   Type.Missing, Type.Missing, Type.Missing,
                                                   Type.Missing, Type.Missing));
            
            format.Font.Bold = true;
            format.Font.Color = 0x000000FF;


4 commentaires

Mais comment gérer les gammes dynamiques?


@Buffer_Overflow Cochez la page LIEN pour la déclaration de méthode get_range, vous pouvez fournir une cellule 1 N 2 à l'aide de la feuille de cible.Cells [1,2] et tachetsheet.cells [3,4] respectivement. J'espère que tu le gs


Et si c'est juste une colonne duplicate seulement? Vérifiez tout d1 par exemple ... si deux doublons existent, mettez-la en surbrillance.


Vous devez modifier la condition des doublons dans la colonne = Countif ($ A $ 1: $ A $ 10, A1) = 1 où A1 à A10 est votre plage de valeurs.



1
votes

Essayez ceci xxx


0 commentaires

6
votes

Disons que vous voulez que vous souhaitez colorer des cellules B1: B10 code> si leurs valeurs ne sont pas égales à celles de A1: A10 code>, c'est-à-dire

B1 A1 CODE> Résultats dans B1 CODE> Être coloré, B2 A2 CODE> Résultats dans B2 CODE> Être coloré, etc. P>

Ensuite, vous pouvez faire le suivant P>

Range columnBRange = (Range)oSheet.Range[oSheet.Cells[1,2], oSheet.Cells[10,2]];

Range columnARange = (Range)oSheet.Range[oSheet.Cells[1,1], oSheet.Cells[1,1]];

FormatCondition cond = (FormatCondition) ColumnBRange.FormatConditions.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlNotEqual, "="+ColumnARange.Address[false,true]);
cond.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); //Red letters
cond.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightYellow); //Light yellow cell background


0 commentaires