Sommation basée sur la mise en forme dans les cellules adjacentes (Microsoft Excel)
Srinivas a des données dans les deux colonnes A et B. Il doit additionner les valeurs de la colonne B pour lesquelles le format de cellule des cellules correspondantes de la colonne A est jaune. Par exemple, si le format de la cellule A17 est jaune, la valeur de la cellule B17 doit être incluse dans la somme.
Il existe de nombreuses macros disponibles sur Internet (y compris dans ExcelTips) qui vous permettent de faire une sommation conditionnelle en fonction de la couleur ou d’un autre format d’une cellule. Ce besoin est cependant différent en ce qu’il ne s’agit pas de la couleur de la cellule en question, mais de la couleur de la cellule une colonne à gauche. Cela peut toujours être fait en utilisant une macro, comme indiqué ici:
Function SumNextYellow(ByVal r As Range) Dim c As Range Dim a As Double For Each c In r If c.Offset(0, -1).Interior.ColorIndex = 6 Then 'Yellow a = a + c.Value End If Next c SumNextYellow = a End Function
La fonction peut être utilisée dans une formule de feuille de calcul et accepte une référence de plage comme argument. Il parcourt ensuite chaque cellule de la plage, et si la cellule juste à gauche est jaune, la valeur est incluse dans la somme. (Vous devez noter que le ColorIndex utilisé dans la macro doit être testé avec votre version d’Excel pour vous assurer qu’il est applicable; il peut être différent dans différentes versions.)
Un exemple beaucoup plus robuste est présenté dans la liste suivante. Cette fonction accepte une ou plusieurs plages de cellules, ainsi qu’un argument qui représente un échantillon de la mise en forme que vous souhaitez utiliser.
Function ColorConditionSum(cSample As Excel.Range, rng As Excel.Range) ' This Function returns sum of values in rng.Columns(2) if ' corresponding cell in rng.Columns(1) is colored with sample ' color (cSample cell) ' Arguments: cSample = cell colored by sample color ' rng = cell range to be processed (2 columns) Dim rngCol2 As Excel.Range Dim rngConstants As Excel.Range Dim rngFormulas As Excel.Range Dim lColorIndex As Long Dim MySum As Double Dim area As Excel.Range Dim c As Excel.Range ColorConditionSum = False If Not TypeOf cSample Is Excel.Range Then Exit Function '>>> lColorIndex = cSample.Interior.ColorIndex MySum = 0 Set rngCol2 = Nothing If TypeOf rng Is Excel.Range Then If rng.Columns.Count < 2 Then Exit Function '>>> On Error Resume Next For Each area In rng.Areas If rngCol2 Is Nothing Then Set rngCol2 = area.Columns(2).SpecialCells(xlCellTypeConstants, 1) If rngCol2 Is Nothing Then Set rngCol2 = area.Columns(2).SpecialCells(xlCellTypeFormulas, 1) Else Set rngCol2 = Application.Union( _ rngCol2, area.Columns(2).SpecialCells(xlCellTypeFormulas, 1)) End If Else Set rngCol2 = Application.Union( _ rngCol2, area.Columns(2).SpecialCells(xlCellTypeConstants, 1)) Set rngCol2 = Application.Union( _ rngCol2, area.Columns(2).SpecialCells(xlCellTypeFormulas, 1)) End If Next area For Each area In rngCol2.Areas For Each c In area.Cells With c.Offset(0, -1) If .Interior.ColorIndex = lColorIndex Then MySum = MySum + c.Value End If End With Next c Next area End If ColorConditionSum = MySum End Function
Vous utilisez cette fonction de la manière suivante dans une feuille de calcul:
=ColorConditionSum(A10, A12:B22)
Dans ce cas, est une cellule qui a la couleur intérieure que vous souhaitez faire correspondre et A12: B22 est la plage de cellules à évaluer. Les valeurs sont extraites de la deuxième colonne de la plage et la mise en forme est vérifiée sur les cellules de la première colonne.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (3298) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
lien: / excelribbon-Summing_Based_on_Formatting_in_Adjacent_Cells [Sommation basée sur le formatage dans les cellules adjacentes]
.