Comment appliquer des formules aux lignes de sous-total?

1

J'ai une feuille de calcul avec de nombreux sous-totaux et un nombre variable de lignes entre eux. Si je ne montre que les lignes de sous-total, ajoute une formule et la déplace vers le bas, Excel ajoute la formule à toutes les lignes et pas seulement aux lignes de sous-total: -

avant sous-total:

prod    qty   price
1       3      55
1       4      66
2       5      77
2       6      88
2       7      99
2       8     110
2       9     121
3      10     132
3      11     143
3      12     154

après sous total compressé:

prod           qty   price
1 Total          7    121
2 Total         35    495
3 Total         33    429
Grand Total     75   1045

moyenne ajoutée aux sous-totaux:

prod           qty    price     weighted average
1 Total          7     121      17.28571429
2 Total         35     495      14.14285714
3 Total         33     429      13
Grand Total     75    1045

traîné vers le bas de la formule et non compressé

prod           qty    price     weighted average
1               3      55   
1               4      66   
1 Total         7     121       17.28571429
2               5      77       15.4
2               6      88       14.66666667
2               7      99       14.14285714
2               8     110       13.75
2               9     121       13.44444444
2 Total        35     495       14.14285714
3              10     132       13.2
3              11     143       13
3              12     154       12.83333333
3 Total        33     429       13
Grand Total    75    1045   

S'il vous plaît ne vous concentrez pas sur cet exemple et comment cela peut être fait différemment. La feuille elle-même est très complexe et nous devons utiliser les sous-totaux dans les formules.

Je dois appliquer des formules uniquement aux sous-totaux. Comment je fais ça?

sdfor
la source
Pouvez-vous publier un exemple de ce qui se trouve dans l'une de vos lignes de sous-total et de ce que vous aimeriez voir?
Melanie
montre-moi s'il te plait
En règle générale, le processus est inversé: vous appliquez les formules suivantes uniquement aux lignes de données et ignorez les sous-totaux. La plupart du temps, cela devrait aboutir au même résultat.
RBarryYoung
pour certains calculs, vous avez besoin du sous-total dans le calcul. les moyennes pondérées est l'un des nombreux exemples

Réponses:

2

Les lignes de sous-total sont généralement identifiables (par exemple avec Average ou Count - ou le plus souvent et comme dans votre cas avec Total ). Filtrer sur le champ «À chaque changement de colonne» pour contient "Tot" pour accéder uniquement aux lignes de sous-total.

Notez que, même s'ils sont filtrés, les résultats peuvent ne pas sembler corrects, mais doivent être ajustés correctement lorsque le filtre est supprimé.

SU585375 example

pnuts
la source
2

Je devais faire la même chose pour une matrice de décision pondérée avec des catégories individuellement pondérées. La feuille de calcul ressemble à ceci:

excel screenshot

Où le "#NAME?" Il semble y avoir plusieurs formules que je décrirai. La feuille de calcul repose sur des macros - une fois qu'elles sont activées, le "#NAME?" la chose s'en va et le bon numéro apparaît.

Chaque catégorie a plusieurs critères avec des poids. Au-dessous des critères, les totaux par catégorie sont calculés, mais dans la ligne à gauche des totaux, se trouve une cellule avec le mot "Catégorie". Les scores de catégorie utilisent cette formule:

=ROUND(SUMPRODUCT(range_up($C83),range_up(D83))/SUM(range_up($C83)),1)

La formule ci-dessus serait correcte si elle était entrée dans la cellule D84 et si le poids de la catégorie était en C84 $.

Les notes finales utilisent cette formule:

=sum_categories($B4:$B98,1,2)

où "$ B4: $ B98" est la plage qui contient le mot "Catégorie", le "1" représente le nombre de colonnes à droite de la colonne "Catégorie" où les poids apparaissent, et le "2" représente le nombre de colonnes du à droite de la colonne "Catégorie" les scores apparaissent (c’est-à-dire que cela devrait être la colonne dans laquelle se trouve la formule).

Les formules ci-dessus utilisent deux fonctions, range_up et sum_categories, fournies ci-dessous:

Function range_up(r As Range) As Range
  Dim t As Range, b As Range

  Application.Volatile

  Set b = r.Cells(1, 1) 'make sure it's only one cell

  If IsEmpty(b.Value) Then 'if cell is empty, start one cell up
    Set b = b.offset(-1)
  End If

  'end(xlup) has strange behaviour if cell above is blank, so fix it manually
  If IsEmpty(b.offset(-1)) Then
    Set t = b
  Else
    Set t = b.End(xlUp)
  End If
  Set range_up = t.Resize(b.Row - t.Row + 1)

End Function

Function sum_categories(r As Range, offset1 As Integer, offset2 As Integer) As Variant
  Dim sum As Variant
  Dim c As Range

  Application.Volatile

  sum = 0
  For Each c In r.Cells
    If c.Value = "Category" Then
      sum = sum + c.offset(0, offset1).Value * c.offset(0, offset2).Value
    End If
  Next c

  sum_categories = sum
End Function

Enfin, si vous souhaitez recalculer manuellement, incluez sur votre formulaire un bouton appelant cette fonction:

Sub force_recalc()
  Application.CalculateFullRebuild
End Sub
Whit Kemmey
la source
1

Le problème est-il juste dans la présentation? Si tel est le cas, vous pouvez utiliser une simple condition pour masquer la sortie indésirable. =IF(RIGHT(B10,5)="Total",INDEX(Summary,A10),"") (Remplacez l'INDEX par la formule que vous utilisez réellement)

phatfingers
la source
-1

Si vous réduisez toutes les lignes que vous ne souhaitez pas écraser, vous pouvez coller la formule en procédant comme suit:

  1. Copier la formule
  2. Mettez en surbrillance la zone à laquelle vous souhaitez appliquer la formule
  3. Aller à "Aller à spécial" (en haut à droite du ruban d'accueil, ou CtrlSG puis Alt + S)
  4. Sélectionnez uniquement les cellules visibles, cliquez sur ok
  5. Coller la formule

J'espère que cela t'aides

scott.se
la source