3 votes

excel 2010 - mettre en surbrillance les cellules utilisées dans n'importe quelle formule

J'aurai besoin de faire la somme d'une longue colonne de valeurs en les divisant en plusieurs groupes. Et je ne veux pas manquer une ligne. J'ai donc besoin de mettre en évidence toutes les cellules que j'ai déjà utilisées dans une formule (par exemple =D1+D2).

Lorsque je double-clique sur la formule, les cellules utilisées sont mises en évidence. Je veux cet effet. J'ai constaté que CTRL [ Je dois faire cette astuce mais elle n'a aucun effet sur mon ordinateur avec Excel 2010. Existe-t-il une autre possibilité ? Merci

Par exemple, j'ai deux colonnes, la première contient des données, la seconde des regroupements. A4 n'est pas utilisé, A1..A3 doit être mis en évidence comme déjà utilisé.

**1**    =A1+A2
**3**    =A3
**2**
4

3voto

Dave Points 25050

Je ne pense pas que la mise en page soit celle que vous souhaitez, mais cela peut suffire : Vous pouvez utiliser les Trace Dependents/Precedents.

Elle se trouve dans la barre d'outils de la formule, sous Formula Auditing (et au même endroit se trouve l'option permettant de supprimer les flèches).

enter image description here

Plus de détails

Cependant, je n'aime pas ce qui précède. Maintenant, cela dépend vraiment de vos besoins, mais j'ai rapidement écrit ce VBa pour vous

Sub Button5_Click()

'PLEASE EDIT THIS FIRST BIT. 

Dim row As Integer
row = 1    ' THE STARTING ROW IN YOUR EXCEL SHEET

Dim numberOfRows As Integer
numberOfRows = 5    'THE TOTAL NUMBER OF ROWS YOUR WORKSHEET HAS

Dim columnWithFormula As String
columnWithFormula = "E"    ' THE COLUMN WHERE THE FORMULAs ARE (I suspect you are using B if your example is accurate))

Dim colourIndex As Integer
colourIndex = 26     ' WHAT COLOUR TO HIGHLIGHT COLUMNS. GOOGLE VBa COLOR INDEX

'AND STOP EDITING :)

For row = 1 To numberOfRows

If range(columnWithFormula & row).Value <> "" Then

   Dim result As String

   result = range(columnWithFormula & row).Formula

   result = Replace(result, "(", " ")
   result = Replace(result, ")", " ")
   result = Replace(result, "-", " ")
   result = Replace(result, "+", " ")
   result = Replace(result, "*", " ")
   result = Replace(result, "/", " ")
   result = Replace(result, "=", " ")
   result = Replace(result, ",", " ")

   Dim cells() As String
   cells = Split(Trim(result), " ")

   For j = 0 To UBound(cells)
    range(cells(j)).Interior.ColorIndex = colourIndex
   Next j

End If

Next row

End Sub

Le résultat ci-dessus est le suivant (j'ai activé la formule pour que vous puissiez voir quelles cellules contiennent une formule).

La macro n'est pas parfaite, mais je ne connais pas vraiment vos besoins. Si vous avez (comme dans l'exemple de votre message) une formule simple, elle devrait fonctionner correctement.

Veuillez noter que la couleur de fond de la cellule sera modifiée et que l'annulation ne fonctionnera pas ! Donc, si vous utilisez déjà le surlignage, vous devrez mettre à jour le code ! Cela signifie également qu'après avoir exécuté cette macro, vous devrez sélectionner manuellement la feuille de travail et rétablir la couleur de fond de votre choix...

enter image description here

Pour développer cela, vous pourriez mettre à jour le boucle for et le remplacer par

For Each Cell in ActiveSheet.UsedRange.Cells
      'logic
Next

de vérifier chaque cellule de la feuille de calcul pour voir s'il n'y a pas de formule...

1voto

ash Points 11

Aller dans une cellule vide - dans cette cellule, tapez =V40=1:1048576 où la première référence (dans ce cas v40) fait référence à une autre cellule vide. La deuxième partie met en évidence la feuille entière.

Appuyez sur la touche Entrée, puis cliquez sur la cellule, cliquez sur Afficher les formules et double-cliquez sur Tracer les précédents. Ceci dessinera un lien bleu vers chaque cellule à laquelle il est fait référence dans une autre cellule. Cherchez celles qui n'ont pas de lignes - elles ont été oubliées.

Cendre

1voto

Ethun_Hunt Points 56

J'ai préparé la macro suivante pour classer les cellules sélectionnées en "Entrée", "Calcul" et "Sortie" et le code assignera les styles nommés "Entrée", "Calcul" et "Sortie". Ceci est utile pour comprendre les feuilles préparées par quelqu'un d'autre ou pour déboguer les feuilles.

La sortie du code ressemblera à ce qui suit (j'ai activé "show formulas"). enter image description here

Mettez le code ci-dessous dans "Sheet code" et non dans le module.

'Macro to classify the cells from selected range into "input", "calculation" and "output"
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    With ActiveSheet.Cells
        .Interior.ColorIndex = xlColorIndexNone
        .Font.ColorIndex = xlAutomatic
        .Font.Bold = False
    End With
    Dim rCell As Range
    Application.EnableEvents = False
    For Each rCell In Target.Cells
        If IsEmpty(rCell.Value) = True Then GoTo AllDone:
        If Not rCell.HasFormula Then
            If HasDependents(rCell) Then
                rCell.Style = "Input"
                GoTo AllDone:
            Else
                GoTo AllDone:
            End If
        Else
            If HasDependents(rCell) Then
                rCell.Style = "Calculation"
                GoTo AllDone:
            Else
                rCell.Style = "Output"
                GoTo AllDone:
            End If
        End If
AllDone:
Err.Clear
    Next rCell
    Application.EnableEvents = True
End Sub
Public Function HasDependents(ByVal Target As Excel.Range) As Boolean
    On Error Resume Next
    HasDependents = Target.Dependents.Count
End Function

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X