Ich habe eine Tabelle mit folgenden Werten:
blah 1 12
2 12
3 12
foo 1 6
bar 1 2
foo 1 6
2 5
Die Zahlen in der mittleren Spalte reichen von 1 bis 8; Zahlen in der rechten Spalte reichen von 1 bis 12. Die mittlere Spalte ist immer in Ordnung ohne Lücken, kann aber nach jedem Wert auf 1 zurückgesetzt werden. Die linke Spalte hat immer einen nicht leeren (aber nicht unbedingt eindeutigen) Wert in einer Zeile und einen leeren Wert in einer & gt; 1 Zeile. Die Werte für die Zeilen & gt; 1 sind meistens das selbe wie die 1 Reihe, aber nicht immer (und ich möchte nicht annehmen, dass sie sind).
Ich möchte eine neue Spalte mit einer einzelnen Formel hinzufügen, die für jede Zeile Folgendes enthält:
- Wenn die erste Zahl eine 1 ist, addieren Sie alle zweiten Zahlen bis einschließlich der nächsten Zeile mit einer 1.
- Wenn die erste Zahl etwas anderes ist, wird 0 ausgegeben.
dh Die erforderliche Ausgabe für die obigen Daten ist:
36
0
0
6
2
11
0
Wenn es einfacher ist, könnte die Summe in der Zeile mit der höchsten Nummer jeder Untergruppe anstatt in der Zeile 1 erscheinen (obwohl ich sie definitiv in der Zeile 1 bevorzuge). Die Zeilenbeziehungen müssen jedoch beibehalten werden - es können nicht nur 4 Zeilen ausgegeben werden.
Alternativ könnte die Gruppierungsentscheidung auf der leeren / nicht leeren Spalte anstelle der Zählspalte basieren; wieder, wenn das einfacher ist.
Antworten:
Angenommen, Sie geben die Tabelle in A1: C7, in D1 und kopieren Sie sie nach unten:
=IF(B1=1,SUM(C1:INDEX(C1:C$1000,IFERROR(MATCH(TRUE,INDEX(B2:B$1000=1,,),0),MATCH(10^10,C:C)))),0)
Stellen Sie die 1000 bei Bedarf auf eine ausreichend höhere Zeilennummer ein.
Es sei angemerkt, dass diese Lösung davon ausgeht, dass die Werte in Spalte C numerisch sind und nicht z. Zahlen als Text gespeichert.
quelle
C1:C12
anstattC1:C$1000
), da es einfacher ist, eine maximale Anzahl von Unterzeilen vor den 1-Wiederholungen zu definieren, als die maximale Anzahl von Zeilen insgesamt zu definieren. Auch dies gibt einen Fehler in der letzten Zeile, aber das ist leicht zu umgehen.