Wie wende ich Formeln auf Zwischensummenzeilen an?

1

Ich habe eine Tabelle mit vielen Zwischensummen und einer variablen Anzahl von Zeilen zwischen ihnen. Wenn ich nur die Zwischensummenzeilen zeige, eine Formel hinzufüge und nach unten ziehe, fügt Excel die Formel allen Zeilen hinzu, nicht nur den Zwischensummenzeilen:

vor Zwischensumme:

Produkt Menge Preis
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

Nach Zwischensumme komprimiert:

Produkt Menge Preis
1 Insgesamt 7 121
2 Insgesamt 35 495
3 Insgesamt 33 429
Gesamtsumme 75 1045

Durchschnitt zu Zwischensummen hinzugefügt:

Produkt Menge Preis gewichteter Durchschnitt
1 Insgesamt 7 121 17.28571429
2 Insgesamt 35 495 14.14285714
3 Insgesamt 33 429 13
Gesamtsumme 75 1045

Formel heruntergezogen und unkomprimiert

Produkt Menge Preis gewichteter Durchschnitt
1 3 55   
1 4 66   
1 Insgesamt 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 Insgesamt 35 495 14.14285714
3 10 132 13.2
3 11 143 13
3 12 154 12.83333333
3 Insgesamt 33 429 13
Gesamtsumme 75 1045   

Bitte konzentrieren Sie sich nicht auf dieses Beispiel und wie es anders gemacht werden kann. Das eigentliche Blatt ist sehr komplex und wir müssen die Zwischensummen in Formeln verwenden.

Ich muss Formeln nur auf die Zwischensummen anwenden. Wie mache ich das?

sdfor
quelle
Können Sie ein Beispiel veröffentlichen, was sich in einer Ihrer Zwischensummenzeilen befindet und was Sie sehen möchten?
Melanie
Bitte zeigen Sie mir ein Beispiel
Im Allgemeinen geschieht dies umgekehrt: Sie wenden nachfolgende Formeln nur auf die Datenzeilen an und überspringen die Zwischensummen. Meistens sollte das zum selben Ergebnis führen.
RBarryYoung
Für einige Berechnungen benötigen Sie die Zwischensumme innerhalb der Berechnung. gewichtete Durchschnitte sind eines von vielen Beispielen

Antworten:

2

Die Zwischensummenzeilen sind in der Regel identifizierbar (zB mit Averageoder Count- oder am häufigsten und wie in Ihrem Fall mit Total). Filtern Sie nach "Bei jeder Änderung in der Spalte" für "Tot", um nur auf die Zwischensummenzeilen zuzugreifen.

Beachten Sie, dass die Ergebnisse im gefilterten Zustand möglicherweise nicht korrekt aussehen, sich aber entsprechend anpassen sollten, wenn der Filter entfernt wird.

SU585375 Beispiel

pnuts
quelle
2

Ähnliches musste ich für eine gewichtete Entscheidungsmatrix mit individuell gewichteten Kategorien tun. Die Tabelle sieht ungefähr so ​​aus:

Excel-Screenshot

Wo ist das "#NAME?" Es erscheinen verschiedene Formeln, die ich beschreiben werde. Die Tabelle basiert auf Makros. Sobald diese aktiviert sind, wird "#NAME?" sache geht weg und die richtige nummer erscheint.

Jede Kategorie hat mehrere Kriterien mit Gewichten. Unterhalb der Kriterien werden die Kategoriesummen berechnet, aber in der Zeile links von den Summen befindet sich eine Zelle mit dem Wort "Kategorie". Die Kategoriewerte verwenden diese Formel:

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

Die obige Formel wäre korrekt, wenn sie in Zelle D84 eingegeben würde und das Kategoriegewicht in $ C84 wäre.

Die Endergebnisse verwenden diese Formel:

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

Dabei ist "$ B4: $ B98" der Bereich, der das Wort "Category" enthält, die "1" gibt an, wie viele Spalten rechts von der "Category" -Spalte die Gewichte angezeigt werden, und die "2" gibt an, wie viele Spalten die Rechts von der Spalte "Kategorie" werden die Bewertungen angezeigt (dh dies sollte die Spalte sein, in der sich die Formel befindet).

Die obigen Formeln verwenden zwei Funktionen, range_up und sum_categories, die unten angegeben sind:

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

Wenn Sie schließlich manuell neu berechnen möchten, fügen Sie eine Schaltfläche in Ihr Formular ein, die diese Funktion aufruft:

Sub force_recalc()
  Application.CalculateFullRebuild
End Sub
Whit Kemmey
quelle
1

Liegt das Problem nur in der Präsentation? In diesem Fall können Sie eine einfache Bedingung verwenden, um die unerwünschte Ausgabe auszublenden. =IF(RIGHT(B10,5)="Total",INDEX(Summary,A10),"") (Ersetzen Sie den INDEX durch die Formel, die Sie tatsächlich verwenden.)

Phatfinger
quelle
-1

Wenn Sie alle Zeilen minimieren, die Sie nicht überschreiben möchten, können Sie die Formel wie folgt einfügen:

  1. Kopieren Sie die Formel
  2. Markieren Sie den Bereich, auf den Sie die Formel anwenden möchten
  3. Gehe zu "Gehe zu Spezial" (oben rechts in der Multifunktionsleiste oder Strg + S und dann Alt + S)
  4. Nur sichtbare Zellen auswählen, OK drücken
  5. Fügen Sie die Formel ein

Hoffe das hilft

scott.se
quelle